android EditText仅限字母表验证

时间:2014-01-28 15:28:03

标签: android validation android-edittext

我想验证EditText并查看所有字母是否都是字母。它应该能够处理多个EditText。我需要一种方法来防止用户输入字母以外的任何内容。

        userTextInput=(EditText)findViewById(R.id.textInput);
    userTextInput.addTextChangedListener(this);

    public void afterTextChanged(Editable edit) {
    String textFromEditView = edit.toString();
            //first method
    ArrayList[] ArrayList;
    //ArrayList [] = new ArrayList;
    for(int i=0; i<=textFromEditView.length(); i++)
    {
        if(textFromEditView[i].isLetter() == false)
        {
            edit.replace(0, edit.length(), "only alphabets");
        }
    }
            //second method
    try
    {
        boolean isOnlyAlphabet = textFromEditView.matches("/^[a-z]+$/i");
        if(isOnlyAlphabet == false)
        {
            edit.replace(0, edit.length(), "only alphabets");
        }
    }
    catch(NumberFormatException e){}


}

对于我的第二种方法,当我输入任何内容,数字或字母时,我的应用程序崩溃。 我测试了我的第一个方法因为它有错误textFromEditView必须是数组类型bue被解析为字符串。你能帮我改进我的代码吗?

3 个答案:

答案 0 :(得分:1)

我认为您使用InputFilter:

做得更好
InputFilter filter = new InputFilter() { 
        public CharSequence filter(CharSequence src, int start, int end,
                                                   Spanned d, int dstart, int dend) { 
                for (int i = start; i < end; i++) { 
                        if (!Character.isLetter(src.charAt(i))) { 
                                return src.subSequence(start, i-1); 
                        } 
                } 
                return null; 
        } 
}; 

edit.setFilters(new InputFilter[]{filter});

代码修改自:How do I use InputFilter to limit characters in an EditText in Android?

答案 1 :(得分:1)

答案 2 :(得分:0)

您可以设置EditText的inputType。更多信息herehere