ホームページ >Java >&#&チュートリアル >テキスト変更時に EditText フィールドをクリアするときに無限ループを防ぐ方法は?
Android on Text Change Listener
この質問は、Text Change Listener を 2 つの EditText フィールドに適用するときに無限ループを防ぐ解決策を求めています。フィールド 1 とフィールド 2。 field1 のテキストが変更されると、field2 がクリアされ、その逆も同様です。
最初の実装では、TextWatchers を両方のフィールドにアタッチする必要があり、field1 のテキストが変更されると、field2 がクリアされ、その逆も同様でした。ただし、フィールドが相互に無期限に変更しようとするため、クラッシュが発生しました。
解決策:
無限ループを防ぐために、チェックを追加できます。 TextWatchers は、テキストが空でない場合 (つまり、長さが異なる場合) にのみ他のフィールドをクリアします。 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(""); } });
このアプローチにより、field1 が変更されてテキストが含まれる場合、field2 が確実にクリアされます。同様に、フィールド 2 は、フィールド 1 のテキストが空でない場合にのみフィールド 1 をクリアします。したがって、目的の動作を実現しながら無限ループが回避されます。
以上がテキスト変更時に EditText フィールドをクリアするときに無限ループを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。