2

で入力検証を実行していますonClickListener()。私は検証方法に問題はありませんが、検証済みの入力にエラーがあるかどうかを判断する方法について心配しています。当分の間isValid、Activity のフィールドを開始時に true にonClickListener()設定し、検証メソッドで検証が失敗した場合は false に設定します。

検証が完了したら、データを操作する前に、isValidすべての入力が適切であることを確認できます。メソッドは機能しますが、もろく感じます。説明するコードを次に示します。

private OnClickListener dcClickListener = new OnClickListener() {
    public void onClick(View v) {
        AuthenticationActivity.this.isValid = true; // set to true for this pass
        emailValidation();
        // more validation methods here...

        if (AuthenticationActivity.this.isValid) {
            Log.i(TAG, "everything valid!");
        }
    }
};

private void emailValidation() {
    if (!isValidEmail(emailInput.getText()
            .toString())) {
        emailInput.setError(getString(R.string.bad_email));

        AuthenticationActivity.this.isValid = false; // same in other methods
    }
}

入力のコレクションを作成し、それを繰り返し処理してエラーがあるかどうかを判断するという考えも頭をよぎりました。アクティビティ レベルの検証を処理するためにフレームワークに組み込まれているものはありますか? ここで概説したものよりも良い解決策はありますか? このパラダイムに一般的に使用されるパターンはありますか?

4

1 に答える 1

0

ブール値を返すカスタム検証関数を作成し、For each ループでその関数を呼び出しているすべてのビューを調べ、ビューをパラメーターで渡します。

関数が True を返す場合は、検証が OK であることを意味します。それ以外の場合は、ビューを配列に追加します。すべてのビューを確認したら、配列にいくつかのビューがあるかどうかを確認します。ある場合は、最初のビューにフォーカスを移し、検証に失敗したすべてのビューにエラー メッセージを表示します。

于 2013-03-22T14:25:49.933 に答える