どの EditText が変更されたかを検出するために、 TextWatcher インターフェイスを使用しようとしています。10 個の EditText を使用するアクティビティがありますが、それぞれに 10 個の TextWatcher を使用するのは奇妙に見えます。
TextWatcher を 1 つだけ使用し、関数 afterTextChanged の Editable で switch ステートメントを使用する方法はありますか?
どの EditText が変更されたかを検出するために、 TextWatcher インターフェイスを使用しようとしています。10 個の EditText を使用するアクティビティがありますが、それぞれに 10 個の TextWatcher を使用するのは奇妙に見えます。
TextWatcher を 1 つだけ使用し、関数 afterTextChanged の Editable で switch ステートメントを使用する方法はありますか?
私がすることは、そのクラスを拡張して作成するクラスを作成することEditText
ですTextWatcher
。次に、これらのEditTextをXMLに実装するか、TextWatcher
それぞれをリッスンしてJavaでプログラムで作成できますEditText
。
これがうまくいくかどうかはわかりませんが、試してみることができます。
EditText
私はこれまでこれを試したことがありませんが、焦点が合っているかどうかを確認すればうまくいくはずです。これを実行する方法はいくつかありますが、最も簡単な方法はEditText
、メソッド内のフォーカスを確認することTextWatcher
です。次のようなことをする必要があります。
if(mEdit1.hasFocus()) {
...
} else if(mEdit2.hasFocus()) {
...
} else if(mEdit3.hasFocus()) {
...
}
別のアプローチは、ルートビューでOnGlobalFocusChangeListenerEditText
を使用し、現在フォーカスがあることを示す変数を設定することです。それでも、どれに焦点が当てられているかを確認するために多くのif
ステートメントが必要EditText
になりますが、より再利用可能なソリューションになる可能性があります。