Android EditText 欄位的文字變更偵聽器
問題:
問題:在Android 上應用程式中,您希望確保兩個EditText 欄位(field1 和field2)中只有一個可以在任何給定的位置包含內容時間。當使用者更改 field1 中的文字時,field2 應該被清除,反之亦然。
但是,在這兩個欄位中新增 TextWatcher 會導致應用程式崩潰,因為每個欄位都會觸發另一個欄位的無限循環。已清除。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(""); } });解決方案:要解決此問題,請在TextWatcher 的 onTextChanged 方法僅在其他欄位具有非空內容時才清除該欄位。以下是修改後的程式碼:透過此修改,當使用者在目前欄位中輸入內容時,應用程式只會清除另一個字段,確保一次只有一個欄位有內容。
以上是在 Android EditText 欄位中使用 TextWatchers 時如何防止無限循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!