ホームページ > Java > &#&チュートリアル > Android で EditText フィールドをクリアするときに無限ループを防ぐ方法は?

Android で EditText フィールドをクリアするときに無限ループを防ぐ方法は?

DDD
リリース: 2024-11-14 12:45:02
オリジナル
720 人が閲覧しました

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

Android EditText: テキストの変更をリッスンし、他のフィールドを空にする

2 つのフィールドのうち 1 つだけにデータが含まれるようにするには、次のことが不可欠になります。一方のフィールドが変更された場合は、もう一方のフィールドをクリアします。この必要性は、2 つの EditText フィールドである field1 と field2 が両方とも同時に値を保持すべきではない状況で発生します。

質問に示されているように、TextWatcher を field1 と field2 の両方にアタッチすると、フィールドがそれぞれをクリアする無限ループが発生します。

解決策:

この問題を解決するには、現在のフィールドにテキストが含まれている場合にのみ、反対側のフィールドをクリアするチェックを実装します。これは、入力文字列の長さを調べることで実現できます。

以下の変更されたコードでは、「if」ステートメントは、入力文字列 (つまり、現在のフィールドに入力されたテキスト) の長さが正しいかどうかをチェックします。そうである場合、反対側のフィールドはクリアされます:

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("");
    }
});
ログイン後にコピー

このチェックを組み込むことにより、無限ループが解消され、目的の機能が達成され、フィールドの 1 つだけにデータが含まれることが保証されます。いつでも。

以上がAndroid で EditText フィールドをクリアするときに無限ループを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート