我有一个令人讨厌的问题与TextWatcher。我一直在寻找网络,但没有找到任何东西。感谢有人能帮助我。TextWatcher事件被多次触发
出于某种原因,在TextWatcher事件对一个文本更改的调用不稳定。有时他们被触发一次(像他们应该),有时两次,有时是三次。不知道为什么,整个事情非常直截了当。有时候,afterTextChanged()的Editable参数会返回toString()和length()中的空值。
代码如下:
private TextWatcher mSearchAddressTextChangeListener = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable searchedAddress) {
System.out.println("called multiple times.");
}
};
内部afterTextChanged()
(以及AsyncTask
)即时没有进行任何更改文本或EditText
视图。
我看到Events of TextWatcher are being called twice中提出的问题,但即时消息触发的事件多于(或少于)两次。无论如何,感谢任何帮助。
编辑:我删除了afterTextChanged()的内容导致即使没有我的代码也会发生此问题。是什么让我相信这是一个错误。当一个普通的char(事件处理程序被触发两次)或者一个普通的char之后的空格char被删除(退格事件处理程序被触发3次)之后立即输入'space'字符时,会发生该错误。帮助仍然将不胜感激。
你想在该适配器做什么?尝试检查'adapter.getCount()> 0'然后清除它。因为如果你得到适配器并清除它,适配器将仍然不为空。 – deadfish
@deadfish适配器并不是真正的问题。它只是基于在TextWatcher中输入的文本而填充的列表。正如我所说的,问题是TextWatcher侦听器上的事件被调用的次数。它完全随机给我。 – AsafK
是的,但每次更改与textwatcher相关的视图(更改文本状态)时都会调用textwatcher,你跟着我吗? – deadfish