Android:OnTextChanged 电子邮件验证未按预期工作
Posted
技术标签:
【中文标题】Android:OnTextChanged 电子邮件验证未按预期工作【英文标题】:Android: OnTextChanged email validation is not working as expected 【发布时间】:2017-06-19 05:09:00 【问题描述】:我正在使用以下代码来验证电子邮件输入
private boolean validateEmail(String email)
String emailPattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`|~-]+@((\\[[0-9]1,3\\.[0-9]1,3\\.[0-9]1,3\\.[0-9]1,3\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]2,))$";
Pattern pattern = Pattern.compile(emailPattern);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
我在onTextChanged
上执行此操作。代码如下(我用的是ButterKnife
)
@OnTextChanged(R.id.et_email)
public void checkCorrectEmail()
if (!validateEmail(mEditTextEmail.getText().toString().trim()))
isValidated = false;
mEditTextEmail.setError("Please enter email address");
mEditTextEmail.requestFocus();
else
isValidated = true;
问题是它不够智能。例如,如果我输入myemail@gmail.com
,它仍然会显示错误消息。但是,如果我输入myemail@gmail.com
,然后输入space
,然后单击删除space
,那么一切都很好,错误消失了。
以前此验证是在按钮的onClick
上进行的。我在这里做错了什么?
【问题讨论】:
【参考方案1】: @OnTextChanged(R.id.et_email)
public void checkCorrectEmail ()
if (!validateEmail(mEditTextEmail.getText().toString().trim()))
isValidated = false;
mEditTextEmail.setError("Please enter email address");
mEditTextEmail.requestFocus();
else
isValidated = true;
mEditTextEmail.setError(null);
100% 正常工作
【讨论】:
mEditTextEmail.setError(null);当电子邮件有效时。【参考方案2】:试试这个:
@OnTextChanged(R.id.et_email)
public void checkCorrectEmail()
if (!validateEmail(mEditTextEmail.getText().toString().trim()))
isValidated = false;
mEditTextEmail.setError("Please enter email address");
mEditTextEmail.requestFocus();
else
mEditTextEmail.setError(null)
isValidated = true;
清除正确输入的错误
【讨论】:
Gautam 也同时回答了问题及其解决方案 时差【参考方案3】:使用内置Email
模式检查器方法:
@OnTextChanged(R.id.et_email)
public void checkCorrectEmail ()
if (!Patterns.EMAIL_ADDRESS.matcher(mEditTextEmail.getText().toString()).matches())
isValidated = false;
mEditTextEmail.setError("Please enter a Valid E-Mail Address!");
mEditTextEmail.requestFocus();
else
isValidated = true;
mEditTextEmail.setError(null);
【讨论】:
以上是关于Android:OnTextChanged 电子邮件验证未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
android 邮件服务器,全球邮企业邮箱Android(安卓)系统手机 POP3 IMAP协议设置方法
如何创建一个创建 onTextChanged Listener 并允许程序员设置不同行为的类
安卓onTextChanged参数解释及实现EditText字数监听 Editable使用