首頁 >Java >java教程 >將 TextChangeListener 與多個 EditText 欄位一起使用時如何防止無限循環?

將 TextChangeListener 與多個 EditText 欄位一起使用時如何防止無限循環?

Patricia Arquette
Patricia Arquette原創
2024-11-19 00:14:02198瀏覽

How to Prevent Infinite Loops When Using TextChangeListeners with Multiple EditText Fields?

具有多個EditText欄位的Android文字變更監聽器

在Android開發中,TextChangeListener允許開發者監聽EditText欄位文字內容的變化。但是,當使用多個 EditText 欄位時,在修改一個欄位的內容時清除另一個欄位的內容需要仔細實作以避免無限循環。

問題:
提供的程式碼嘗試清除 field2當 field1 變更時,反之亦然。但是,這會導致無限循環,因為每個欄位都會觸發另一個欄位中的變更事件,從而導致無休止的清除。

解決方案:
為了防止無限循環,需要進行檢查應添加以確保僅清除非空白字段。透過新增field1.addTextChangedListener和field2.addTextChangedListener,您可以監控這兩個欄位的變化。在每個偵聽器中,新增一個條件來檢查 CharSequence 長度是否大於 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("");
    }
});

透過確保僅清除非空字段,可以防止無限循環並允許用戶一次僅將資料輸入到一個字段中

附加說明:
請記住遵循命名約定並使用正確的縮排以保持清晰。另外,請參閱 TextWatcher 的官方文件以了解更多詳細資訊。

以上是將 TextChangeListener 與多個 EditText 欄位一起使用時如何防止無限循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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