我该如何避免类似以下代码行的问题:
((EditText) findViewById(R.id.MyEditText)).setText("Hello");
这里将会触发一个事件:
((EditText) findViewById(R.id.MyEditText)).addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// HERE
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
我想知道是否有办法抑制onTextChanged的执行,因为我注意到在选择AutoCompleteTextView的下拉结果时(不执行onTextChanged!)。
我不是在寻找诸如“如果出现某种情况则不执行”的变通方法...
TextWatcher
的引用,在设置文本之前删除侦听器(使用removeTextChangedListener(watcher)
),然后设置文本,在重新启用侦听器(使用addTextChangedListener(watcher)
)。如果您需要多次执行此操作,则可以将其放入一个方法中以提高方便性。 - user