1

2つのEditTextボックス、1つの電子メールと1つのプレーンテキストがあるアクティビティがあります。ユーザーが先に進む前に、メールボックスが空ではなく、メールパターンと一致していることを確認したいと思います。パターンマッチャー部分は機能しますが、空の文字列部分は機能しません。

ユーザーがデータを入力するときに検証し、メールが正しいかどうかに応じて2つのボタンをクリック可能かどうかを設定します。ただし、ボックスが空の場合、ユーザーはボタンを押すべきではないときにボタンを押すことができます。ボックスにテキストがある場合、電子メールパターンが一致したときにのみユーザーにボタンを押させるという正しいことを行います。

私のアフターテキストはメソッドを変更しました:

        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            String enteredEmail = email.getText().toString();

            if (validateEmail(enteredEmail) == true) {
                image1.setImageResource(R.drawable.greentick);
                play.setClickable(true);
                play.setFocusable(true);
                existingUser.setClickable(true);
                existingUser.setFocusable(true);
            }

            else {
                System.out.println("Invalid");
                image1.setImageResource(R.drawable.redcross);
                play.setClickable(false);
                play.setFocusable(false);
                existingUser.setClickable(false);
                existingUser.setFocusable(false);
            }
        }

そして私のvalidateEmail()メソッド:

public boolean validateEmail(String email) {

    boolean validated = false;
    if (android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches() && (! email.equals("")) ) {
        validated = true;           
    }

    else {
        validated = false;
    }   
    return validated;
}
4

2 に答える 2

1

TextChangedテキストが変更されていないため、ユーザーが何も入力していない場合は起動しません...デフォルトでボタンを無効にする必要があります。

イベントが発生していないことを示しているはずなので、デバッグを試しましたか。

于 2012-06-01T16:02:25.277 に答える
0

これは私が電子メールフィールド(正規表現)を検証する方法です:

private Boolean validateEmail(String email)
{
    return email.matches("^[-!#$%&'*+/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+/0-9=?A-Z^_a-z{|}~])*@[a-zA-Z](-?[a-zA-Z0-9])*(\\.[a-zA-Z](-?[a-zA-Z0-9])*)+$");
}

参考までに:私はオフハンドを覚えていません、あなたはorg.apache.commons.lang3.stringutilsを必要とするかもしれません

于 2012-06-01T15:56:09.427 に答える