複数の 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 サイトの他の関連記事を参照してください。