首頁 > Java > java教程 > Android 中清除 EditText 欄位時如何防止無限循環?

Android 中清除 EditText 欄位時如何防止無限循環?

DDD
發布: 2024-11-14 12:45:02
原創
721 人瀏覽過

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

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板