Merge "Fix crash due to TextView.getText() returning null."

This commit is contained in:
TreeHugger Robot
2017-09-27 11:54:12 +00:00
committed by Android (Google) Code Review

View File

@@ -85,7 +85,8 @@ public final class SelectionActionModeHelper {
mEditor = Preconditions.checkNotNull(editor);
mTextView = mEditor.getTextView();
mTextClassificationHelper = new TextClassificationHelper(
mTextView.getTextClassifier(), mTextView.getText(),
mTextView.getTextClassifier(),
getText(mTextView),
0, 1, mTextView.getTextLocales());
mSelectionTracker = new SelectionTracker(mTextView);
@@ -99,7 +100,7 @@ public final class SelectionActionModeHelper {
public void startActionModeAsync(boolean adjustSelection) {
mSelectionTracker.onOriginalSelection(
mTextView.getText(),
getText(mTextView),
mTextView.getSelectionStart(),
mTextView.getSelectionEnd(),
mTextView.isTextEditable());
@@ -197,7 +198,7 @@ public final class SelectionActionModeHelper {
}
private void startActionMode(@Nullable SelectionResult result) {
final CharSequence text = mTextView.getText();
final CharSequence text = getText(mTextView);
if (result != null && text instanceof Spannable) {
Selection.setSelection((Spannable) text, result.mStart, result.mEnd);
mTextClassification = result.mClassification;
@@ -358,7 +359,9 @@ public final class SelectionActionModeHelper {
}
private void resetTextClassificationHelper() {
mTextClassificationHelper.reset(mTextView.getTextClassifier(), mTextView.getText(),
mTextClassificationHelper.reset(
mTextView.getTextClassifier(),
getText(mTextView),
mTextView.getSelectionStart(), mTextView.getSelectionEnd(),
mTextView.getTextLocales());
}
@@ -467,7 +470,7 @@ public final class SelectionActionModeHelper {
if (isSelectionStarted()
&& mAllowReset
&& textIndex >= mSelectionStart && textIndex <= mSelectionEnd
&& textView.getText() instanceof Spannable) {
&& getText(textView) instanceof Spannable) {
mAllowReset = false;
boolean selected = editor.selectCurrentWord();
if (selected) {
@@ -723,7 +726,7 @@ public final class SelectionActionModeHelper {
mSelectionResultSupplier = Preconditions.checkNotNull(selectionResultSupplier);
mSelectionResultCallback = Preconditions.checkNotNull(selectionResultCallback);
// Make a copy of the original text.
mOriginalText = mTextView.getText().toString();
mOriginalText = getText(mTextView).toString();
}
@Override
@@ -739,7 +742,7 @@ public final class SelectionActionModeHelper {
@Override
@UiThread
protected void onPostExecute(SelectionResult result) {
result = TextUtils.equals(mOriginalText, mTextView.getText()) ? result : null;
result = TextUtils.equals(mOriginalText, getText(mTextView)) ? result : null;
mSelectionResultCallback.accept(result);
}
@@ -888,4 +891,14 @@ public final class SelectionActionModeHelper {
return SelectionEvent.ActionType.OTHER;
}
}
private static CharSequence getText(TextView textView) {
// Extracts the textView's text.
// TODO: Investigate why/when TextView.getText() is null.
final CharSequence text = textView.getText();
if (text != null) {
return text;
}
return "";
}
}