diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java index fa8f87710b1b8f..d6f4b761499f59 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java @@ -130,9 +130,8 @@ public void setTextIsSelectable(boolean selectable) { @Override protected boolean verifyDrawable(Drawable drawable) { - if (mContainsImages && getText() instanceof Spanned) { - Spanned text = (Spanned) getText(); - TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class); + if (mContainsImages) { + TextInlineImageSpan[] spans = getTextInlineImageSpan(); for (TextInlineImageSpan span : spans) { if (span.getDrawable() == drawable) { return true; @@ -144,9 +143,8 @@ protected boolean verifyDrawable(Drawable drawable) { @Override public void invalidateDrawable(Drawable drawable) { - if (mContainsImages && getText() instanceof Spanned) { - Spanned text = (Spanned) getText(); - TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class); + if (mContainsImages) { + TextInlineImageSpan[] spans = getTextInlineImageSpan(); for (TextInlineImageSpan span : spans) { if (span.getDrawable() == drawable) { invalidate(); @@ -159,9 +157,8 @@ public void invalidateDrawable(Drawable drawable) { @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); - if (mContainsImages && getText() instanceof Spanned) { - Spanned text = (Spanned) getText(); - TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class); + if (mContainsImages) { + TextInlineImageSpan[] spans = getTextInlineImageSpan(); for (TextInlineImageSpan span : spans) { span.onDetachedFromWindow(); } @@ -171,9 +168,8 @@ public void onDetachedFromWindow() { @Override public void onStartTemporaryDetach() { super.onStartTemporaryDetach(); - if (mContainsImages && getText() instanceof Spanned) { - Spanned text = (Spanned) getText(); - TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class); + if (mContainsImages) { + TextInlineImageSpan[] spans = getTextInlineImageSpan(); for (TextInlineImageSpan span : spans) { span.onStartTemporaryDetach(); } @@ -183,9 +179,8 @@ public void onStartTemporaryDetach() { @Override public void onAttachedToWindow() { super.onAttachedToWindow(); - if (mContainsImages && getText() instanceof Spanned) { - Spanned text = (Spanned) getText(); - TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class); + if (mContainsImages) { + TextInlineImageSpan[] spans = getTextInlineImageSpan(); for (TextInlineImageSpan span : spans) { span.onAttachedToWindow(); } @@ -195,9 +190,8 @@ public void onAttachedToWindow() { @Override public void onFinishTemporaryDetach() { super.onFinishTemporaryDetach(); - if (mContainsImages && getText() instanceof Spanned) { - Spanned text = (Spanned) getText(); - TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class); + if (mContainsImages) { + TextInlineImageSpan[] spans = getTextInlineImageSpan(); for (TextInlineImageSpan span : spans) { span.onFinishTemporaryDetach(); } @@ -280,4 +274,12 @@ private ReactViewBackgroundDrawable getOrCreateReactViewBackground() { } return mReactBackgroundDrawable; } + + private TextInlineImageSpan[] getTextInlineImageSpan() { + if (getText() instanceof Spanned) { + Spanned text = (Spanned) getText(); + return text.getSpans(0, text.length(), TextInlineImageSpan.class); + } + return new TextInlineImageSpan[] { }; + } }