1. ホーム
  2. android

[解決済み] Android: EditText 入力を検証するにはどうすればよいですか?

2022-04-21 19:17:02

質問

一連のEditTextsに対してフォーム入力の検証を行う必要があります。OnFocusChangeListenersを使用して、ユーザーが各テキストに入力した後に検証を開始していますが、最後のEditTextでは期待通りの動作になりません。

最後の EditText に入力中に "Done" ボタンをクリックすると、InputMethod は切断されますが、技術的には EditText のフォーカスが失われることはありません(したがって、検証も発生しません)。

最適な解決策は?

フォーカスが変わったときではなく、InputMethodが各EditTextからアンバインドされたときに監視するべきですか?もしそうなら、どのように?

どのように解決するのですか?

を使用してはいかがでしょうか。 TextWatcher ?

をいくつも持っているので EditText は、以下のようになります。

  1. あなたのアクティビティが実装しているのは android.text.TextWatcher インターフェース
  2. EditTextボックスにTextChangedリスナーを追加する。
txt1.addTextChangedListener(this);
txt2.addTextChangedListener(this);
txt3.addTextChangedListener(this);

  1. オーバーライドされたメソッドのうち afterTextChanged(Editable s) メソッドは次のようになります。
@Override
public void afterTextChanged(Editable s) {
    // validation code goes here
}

Editable s では、どのEditTextボックスのテキストが変更されたかを見つけるのに役立ちません。しかし、次のように直接EditTextボックスの内容をチェックすることができます。

String txt1String = txt1.getText().toString();
// Validate txt1String

を同じメソッドで実行します。私が明確であることを望みますし、もしそうなら、それは助けになります :)

EDITです。 よりクリーンなアプローチとして、以下をご参照ください。 Christopher Perryの回答 を以下に示します。