我有一個令人討厭的問題與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