ホームページ  >  記事  >  Java  >  複数の EditText フィールドで TextChangeListeners を使用するときに無限ループを防ぐ方法は?

複数の EditText フィールドで TextChangeListeners を使用するときに無限ループを防ぐ方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 00:14:02138ブラウズ

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 より大きいかどうかをチェックする条件を追加します。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("");
    }
});

空ではないフィールドのみがクリアされるようにすることで、無限ループを防ぎ、ユーザーは一度に 1 つのフィールドにのみデータを入力できるようになります。 time.

追加メモ:
わかりやすくするために、命名規則に従い、適切なインデントを使用してください。また、詳細については TextWatcher の公式ドキュメントを参照してください。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。