Android EditText:監聽文字更改並清空其他欄位
要確保兩個欄位中只有一個包含數據,必須如果修改了另一字段,則清除該字段。這種需要出現在 field1 和 field2(兩個 EditText 欄位)不應同時保存值的情況下。
如問題中所示,將 TextWatcher 附加到 field1 和 field2 會導致無限循環,其中欄位會清除每個欄位其他無限期。
解決方案:
要解決此問題,請實施僅噹噹前欄位包含文字時才清除相反欄位的檢查。這可以透過檢查輸入字串的長度來實現。
在下面修改後的程式碼中,「if」語句檢查輸入字串(即輸入到目前欄位中的文字)的長度是否為與 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(""); } });
透過合併此檢查,無限循環被打破,並實現所需的功能,確保只有一個欄位曾經包含任何給定時間的資料。
以上是Android 中清除 EditText 欄位時如何防止無限循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!