您分配editText.getText()
给一个变量。这意味着它的价值不会改变。
当您调用setText()
时,原始文本将被新的 CharSequence 覆盖;返回的 Editable 的原始实例getText()
不再是 TextView 的一部分,因此您的editable
变量不再附加到 TextView。
看看 TextView 的getEditableText()
(这是 EditText 调用的getText()
):
public Editable getEditableText() {
return (mText instanceof Editable) ? (Editable) mText : null;
}
如果mText
是一个可编辑对象,那么它将返回它。否则,它将返回null
。
setText()
最终到达setTextInternal()
:
private void setTextInternal(@Nullable CharSequence text) {
mText = text;
mSpannable = (text instanceof Spannable) ? (Spannable) text : null;
mPrecomputed = (text instanceof PrecomputedText) ? (PrecomputedText) text : null;
}
如您所见,它只是覆盖了该mText
字段,这意味着您的 Editable 实例不再是 EditText 拥有的实例。
文本视图.java