首頁 >Java >java教程 >在文字變更時清除 EditText 欄位時如何防止無限循環?

在文字變更時清除 EditText 欄位時如何防止無限循環?

Barbara Streisand
Barbara Streisand原創
2024-11-20 12:19:09238瀏覽

How to Prevent Infinite Loop When Clearing EditText Fields on Text Change?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn