我不知道这是一个错误还是我遗漏了什么,但它看起来像前者。
我有一个EditText
我已添加TextWatcher
,如下所示:
editText.addTextChangedListener(textWatcher);
并且TextWatcher
已经以这种方式实现:
private final TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.d(TAG, "before editing");
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
String text = s.toString();
if(text.length() < 2) {
if(listView.getVisibility() == View.VISIBLE)
listView.setVisibility(View.INVISIBLE);
return;
}
showSuggestions(text);
}
};
现在,奇怪的是,如果我删除Log
方法中的beforeTextChanged
,则永远不会调用afterTextChanged
方法,并且EditText
不显示新的输入。另一方面,我在该方法中放置的任何代码行都使它工作正常。解释