当我将TextWatcher设置为类似
的EditText时editText1.addTextChangedListener(watcher);
它的方法
无论EditText是否有文本,public void onTextChanged(CharSequence s, int start, int count, int after)
和afterTextChanged and beforeTextChanged
都会触发。
我认为只有在绑定后更改文本后才会调用这些方法。我怎样才能实现这一点,或者我的逻辑中有什么问题?
由于
编辑:
我在addTextChangedListener之前的setText()。
调用堆栈:
DalvikVM [本地主机:8600]
线程[< 1>主要](暂停)
EditText(TextView).sendOnTextChanged(CharSequence,int,int,int)行:7875
EditText(TextView).setText(CharSequence,TextView $ BufferType,boolean,int)行:3488
EditText(TextView).setText(CharSequence,TextView $ BufferType)行:3341
EditText.setText(CharSequence,TextView $ BufferType)行:90
EditText(TextView).setText(CharSequence)行:3316
EditText(TextView).onRestoreInstanceState(Parcelable)行:3216
EditText(View).dispatchRestoreInstanceState(SparseArray)行:10079
...
答案 0 :(得分:1)
只需拨打addTextChangedListener(TextWatcher)
即可触发这些方法。可能你只是在调用setText()
或者以编程方式修改文本。
这是android.widget.TextView.addTextChangedListener
的源代码:
public void addTextChangedListener(TextWatcher watcher) {
if (mListeners == null) {
mListeners = new ArrayList<TextWatcher>();
}
mListeners.add(watcher);
}