0

TextWatcheraを aに設定すると、次のEditTextようになります。

editText1.addTextChangedListener(watcher);

インターフェイス メソッドonTextChangedafterTextChangedおよびは、にテキストが含まれてbeforeTextChangedいるかどうかに関係なく起動されます。EditText

これらのメソッドは、バインド後にテキストが変更された後にのみ呼び出されると想定しました。この動作を防ぐことはできますか? この動作の原因となっている論理エラーを作成しましたか?

ありがとう

編集:

私はsetText()前にaddTextChangedListener

コール スタック:

DalvikVM[localhost:8600]    
Thread [<1> main] (Suspended)   
    <VM does not provide monitor information>   
    EditText(TextView).sendOnTextChanged(CharSequence, int, int, int) line: 7875    
    EditText(TextView).setText(CharSequence, TextView$BufferType, boolean, int) line: 3488  
    EditText(TextView).setText(CharSequence, TextView$BufferType) line: 3341    
    EditText.setText(CharSequence, TextView$BufferType) line: 90    
    EditText(TextView).setText(CharSequence) line: 3316 
    EditText(TextView).onRestoreInstanceState(Parcelable) line: 3216    
    EditText(View).dispatchRestoreInstanceState(SparseArray) line: 10079    
    ...
4

1 に答える 1

2

を呼び出すだけでは、これらのメソッドは起動しないはずですaddTextChangedListener(TextWatcher)setText()おそらく、プログラムでテキストを呼び出しているか、その他の方法で変更しているだけです。


これはのソースコードですandroid.widget.TextView.addTextChangedListener:

public void addTextChangedListener(TextWatcher watcher) {
    if (mListeners == null) {
        mListeners = new ArrayList<TextWatcher>();
    }
    mListeners.add(watcher);
}
于 2013-01-06T03:01:51.997 に答える