我怎样才能避免这样的代码行:
((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!)。
我不是在寻找诸如“如果你好,什么都不做”之类的解决方法......
最佳答案
AutoCompleteTextView 的来源表明他们设置了一个 bool 值来表示文本正在被 block 完成替换
mBlockCompletion = true;
replaceText(convertSelectionToString(selectedItem));
mBlockCompletion = false;
这是实现您想要做的任何事情的好方法。 TextWatcher然后检查 setText 是否通过完成来完成并从方法中返回
void doBeforeTextChanged() {
if (mBlockCompletion) return;
添加和删除 TextWatcher 对应用程序来说会更耗时
关于android - 如何避免在 Android EditText 中执行 onTextChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12802277/