我想验证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被解析为字符串。你能帮我改进我的代码吗?
答案 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)