【问题标题】:Show all setError messages in Android在 Android 中显示所有 setError 消息
【发布时间】:2017-12-28 05:16:18
【问题描述】:
if (!validateEmail(email) || (TextUtils.isEmpty(email))) {
emailwrapper.setError("Invalid email");
} else {
emailwrapper.setError(null);
}
if (password.length() < 6 || (TextUtils.isEmpty(password))) {
passwordwrapper.setError("Password must have at least 6 characters");
return;
} else {
passwordwrapper.setError(null);
}
startActivity(new Intent(SignupActivity.this, MoreInfo.class));
如果两个文本输入布局都留空,我将如何使这两个错误消息都显示,并确保用户无法在仅正确填写密码的情况下继续进入 MoreInfo 类?
【问题讨论】:
标签:
android
android-textinputlayout
textinputlayout
【解决方案1】:
创建一个函数,该函数返回一个布尔值并根据该值进行相应的处理:
private boolean areAllFieldsValid() {
boolean returnValue = true;
if (!validateEmail(email) || (TextUtils.isEmpty(email))) {
emailwrapper.setError("Invalid email");
returnValue = false;
} else {
emailwrapper.setError(null);
}
if (password.length() < 6 || (TextUtils.isEmpty(password))) {
passwordwrapper.setError("Password must have at least 6 characters");
returnValue = false;
} else {
passwordwrapper.setError(null);
}
return returnValue;
}
现在检查这个条件:
if(areAllFieldsValid()){
startActivity(new Intent(SignupActivity.this, MoreInfo.class));
}
【解决方案2】:
使用基于验证您的条件的布尔变量,然后导航。试试下面的示例
boolean valid = true;
if (!validateEmail(email) || (TextUtils.isEmpty(email))) {
valid = false;
emailwrapper.setError("Invalid email");
} else {
valid = true;
emailwrapper.setError(null);
}
if (password.length() < 6 || (TextUtils.isEmpty(password))) {
valid = false;
passwordwrapper.setError("Password must have at least 6 characters");
} else {
valid = true;
passwordwrapper.setError(null);
}
if(valid)
startActivity(new Intent(SignupActivity.this, MoreInfo.class));
【解决方案3】:
创建布尔检查方法
if(isValid()){
startActivity(new Intent(SignupActivity.this, MoreInfo.class));
}
布尔方法
private boolean isValid() {
if (!validateEmail(email) || (TextUtils.isEmpty(email))) {
emailwrapper.setError("Invalid email");
return false;
} else {
emailwrapper.setError(null);
emailwapper.setErrorEnabled(false);
}
if (password.length() < 6 || (TextUtils.isEmpty(password))) {
passwordwrapper.setError("Password must have at least 6 characters");
return false;
} else {
passwordwrapper.setError(null);
passwordwapper.setErrorEnabled(false);
}
retun true;
}