检查字符串是否为空文本或数字的方法无效

时间:2015-12-08 13:59:31

标签: java android

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

2 个答案:

答案 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)) { }