首頁  >  文章  >  Java  >  在 Android EditText 欄位中使用 TextWatchers 時如何防止無限循環?

在 Android EditText 欄位中使用 TextWatchers 時如何防止無限循環?

DDD
DDD原創
2024-11-12 09:41:02195瀏覽

How to Prevent an Infinite Loop When Using TextWatchers in Android EditText Fields?

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

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