在Android中检查空电子邮件字符串时出错

时间:2012-06-01 15:51:48

标签: android string validation

我的活动有两个EditText框,一个电子邮件和一个纯文本。我想检查电子邮箱是否为空,并且在允许用户继续前与电子邮件模式匹配。模式匹配器部分可以工作,但空字符串部分不起作用。

我验证用户输入数据,然后根据电子邮件是否正确将两个按钮设置为可点击或不可点击。但是,如果该框为空,则允许用户在不应该按下按钮时按下该按钮。当框中有文本时,只有当用户在匹配电子邮件模式时按下按钮才能正确操作。

我的文字更改方法:

        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;
}

2 个答案:

答案 0 :(得分:1)

如果用户未输入任何内容,

TextChanged将不会触发,因为文本未更改...您应该默认禁用该按钮。

您是否尝试过调试,因为这应该显示事件未触发。

答案 1 :(得分: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