Android:TextWatcher.onTextChanged在绑定到EditText时触发

时间:2013-01-06 02:35:04

标签: android textwatcher

当我将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
        ...

1 个答案:

答案 0 :(得分:1)

只需拨打addTextChangedListener(TextWatcher)即可触发这些方法。可能你只是在调用setText()或者以编程方式修改文本。


这是android.widget.TextView.addTextChangedListener的源代码:

public void addTextChangedListener(TextWatcher watcher) {
    if (mListeners == null) {
        mListeners = new ArrayList<TextWatcher>();
    }
    mListeners.add(watcher);
}