Android EditText フィールドのテキスト変更リスナー
問題:
Android アプリケーションでは、常に 2 つの EditText フィールド (field1 と field2) のうち 1 つだけがコンテンツを保持できるようにしたいとします。ユーザーがフィールド 1 のテキストを変更すると、フィールド 2 がクリアされる必要があり、その逆も同様です。
ただし、TextWatcher を両方のフィールドに追加すると、各フィールドがもう一方のフィールドをトリガーする無限ループが発生してアプリがクラッシュします。
解決策:
この問題を解決するには、 TextWatcher の onTextChanged メソッドを使用して、空ではないコンテンツがある場合にのみ他のフィールドをクリアします。変更されたコードは次のとおりです。
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 フィールドで TextWatchers を使用するときに無限ループを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。