android on Text Change Listener
這個問題尋求一種解決方案,以防止在將文字變更偵聽器應用於兩個EditText 欄位時出現無限循環,欄位1 和欄位2。當 field1 中的文字變更時,field2 應該被清除,反之亦然。
最初的實作涉及將 TextWatchers 附加到兩個字段,其中,當 field1 中的文字變更時,field2 將被清除,反之亦然。但是,由於字段試圖無限期地相互更改,這導致了崩潰。
解決方案:
為了防止無限循環,可以添加一個檢查TextWatchers 僅在文字不為空時清除其他欄位(即,當長度不同於0) .
這是一個更新的實作:
field1.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(s.length() != 0) field2.setText(""); } }); field2.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(s.length() != 0) field1.setText(""); } });
此方法確保當field1當更改並有文字時,它會清除 field2。同樣,field2 僅在其文字不為空時才清除 field1。因此,在實現所需行為的同時避免了無限循環。
以上是在文字變更時清除 EditText 欄位時如何防止無限循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!