1

EditText フィールドのテキスト入力を検証しようとしています。setErrorsフィールドにテキストが入力されていない場合に作成しました。Submitボタンが押されると、フィールドが検証されます。

空のフィールドに対してasetErrorがスローされた場合、フィールドにテキストが入力されます。ユーザーが空のフィールドにテキストを入力して手動でタップした場合でsetErrorはなく、Submit が押されるか、フィールドで Enter キーが押されると、 が消えます。別のフィールド。setErroテキストが入力されても、最初のフィールドのr はアクティブのままです。

EditTextこの問題を修正するためにテキストを入力すると、検証できると思います。
これはこれを行う正しい方法ですか?

EditText toText = (EditText) findViewById(R.id.to);
EditText subjectText = (EditText) findViewById(R.id.subject);

if (toText.getText().length() == 0) {
    toText.setError("Please enter a valid recipient");
}

else {
    toText.setError(null);
}

if (subjectText.getText().length() == 0) {
    subjectText.setError("Please enter a subject");
}

else {
    subjectText.setError(null);
}

だから私が達成しようとしていること:

  • ユーザーが toText にテキストを入力するのを忘れる
  • ユーザーが [送信] をクリックすると、setError メッセージが表示される
  • ユーザーが toText にテキストを入力する
  • ユーザーが subjectText をタップ
  • toText は引き続き setError を表示します
  • このシナリオで setError を削除したい

次の場合、toText は setError を削除します。

  • ユーザーが [送信] をもう一度クリックして、フィールドを再検証する
  • ユーザーがキーボードの Enter キーを押して次のフィールドに進む
4

1 に答える 1

0

実際、私はあなたを完全には理解していませんでした。次のようなものを使用しないでください:

//EditText et;

if(et.getText().length() == 0) {
//the field is empty
}
else {
//perform the action
}

Regular Expressionsまたは、入力を検証するために使用できます

于 2012-11-25T09:16:22.293 に答える