複数のEditTextに対応するTextWatcher
2023-12-15 18:29:27
質問
を実装したいのですが
TextWatcher
インターフェイスを実装したいのですが、複数の
EditText
フィールドを使用することができます。現在、私は:
text1.addTextChangedListener(this);
text2.addTextChangedListener(this);
で、そのメソッドをActivityでオーバーライドします。
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count)
{
// do some operation on text of text1 field
// do some operation on text of text2 field
}
しかし、これはうまくいっていますが、私は他の方法を探しています。
EditText
フィールドが
SoftKeyboard
は現在フォーカスされています。
どのように解決するのですか?
での解決策を提案します。
Sebastian Roth さんの回答
のインスタンスは1つではありません。
TextWatcher
に対して、いくつかの
EditTexts
. これは1つのクラスとそのクラスのn個のインスタンスで、n個の
EditTexts
.
各EditTextはそれぞれSpanableを持ちます。
TextWatcher
のイベントには、このSpanableが
s
というパラメータがあります。myEditText1.getText()はそのSpannableを返します。そのため、もし
myEditText1.getText().hashCode()
と等しい場合は
s.hashCode()
ということは
s
に属している
myEditText1
のインスタンスを一つ持ちたい場合、そのインスタンスは
TextWatcher
に対して、ある
EditTexts
を使うべきでしょう。
private TextWatcher generalTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (myEditText1.getText().hashCode() == s.hashCode())
{
myEditText1_onTextChanged(s, start, before, count);
}
else if (myEditText2.getText().hashCode() == s.hashCode())
{
myEditText2_onTextChanged(s, start, before, count);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (myEditText1.getText().hashCode() == s.hashCode())
{
myEditText1_beforeTextChanged(s, start, count, after);
}
else if (myEditText2.getText().hashCode() == s.hashCode())
{
myEditText2_beforeTextChanged(s, start, count, after);
}
}
@Override
public void afterTextChanged(Editable s) {
if (myEditText1.getText().hashCode() == s.hashCode())
{
myEditText1_afterTextChanged(s);
}
else if (myEditText2.getText().hashCode() == s.hashCode())
{
myEditText2_afterTextChanged(s);
}
}
};
と
myEditText1.addTextChangedListener(generalTextWatcher);
myEditText2.addTextChangedListener(generalTextWatcher);
関連
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] AndroidでEditTextのテキスト長を制限する最も良い方法は何ですか?
-
[解決済み] EditTextのカーソル色を設定する
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] 文字列リソースにHTML?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] 非推奨のandroid.support.v4.app.ActionBarDrawerToggleの置き換え方法
-
[解決済み] 文字列リソースにHTML?