我在android中使用这个检查,新的浮动标签用于编辑文本,方法就像这样工作。如果字符串变为空文本或数字,我正在设置错误消息以编辑文本。它可以工作,如果我只检查字符串是否为空,但当我尝试检查字符串是否获得一些数字,它不起作用。这是我的代码:
private boolean validateLastName() {
String checkLastName = inputLastName.getText().toString();
if (checkLastName.trim().isEmpty())
for (int i = 0; i < checkLastName.length(); i++) {
if (!Character.isLetter(checkLastName.charAt(i))) {
inputLayoutLastName.setError(getString(R.string.err_msg_last_name));
requestFocus(inputLastName);
return false;
} else {
inputLayoutLastName.setErrorEnabled(false);
}
}
return true;
}
这就是我使用它的方式:
if (!validateLastName()) {
return;
}
修改
例如,这工作正常,但上面的代码什么也没做,下面的代码显示错误(我的意思是用户的错误信息):
private boolean validateName() {
if (inputName.getText().toString().trim().isEmpty()) {
inputLayoutName.setError(getString(R.string.err_msg_name));
requestFocus(inputName);
return false;
} else {
inputLayoutName.setErrorEnabled(false);
}
return true;
}
答案 0 :(得分:1)
如果您的解决方案发生细微变化,我认为它会起作用。我没有在android中尝试过它,但我在java(没有android)中尝试了类似的东西来验证逻辑。
private boolean validateLastName() {
String checkLastName = inputLastName.getText().toString().trim();
if (checkLastName.isEmpty()) {
inputLayoutLastName.setError(getString(R.string.err_msg_last_name));
requestFocus(inputLastName);
return false;
} else {
for (int i = 0; i < checkLastName.length(); i++) {
if (!Character.isLetter(checkLastName.charAt(i))) {
inputLayoutLastName.setError(getString(R.string.err_msg_last_name));
requestFocus(inputLastName);
return false;
}
}
}
inputLayoutLastName.setErrorEnabled(false);
return true;
}
答案 1 :(得分:0)
if (!validateLastName()) {
return;
}
将此更改为
return !validateLastName();
编辑: 实际上你甚至不会在你的if测试中检查数字,这就是为什么如果有数字它没有返回false。
private final CharSequence NUMBERS = "0123456789";
if (inputName.getText().toString().trim().isEmpty() &&
inputName.getText().toString.contains(NUMBERS)) { }