我想知道验证表单的最佳方法是什么?
我确实尝试了以下方法:
EditText fname = (EditText)findViewById(R.id.first_name);
String fname_text = fname.getText().toString;
if(fname_text.equalsIgnoreCase(""))
{
fname.setError("Field is required");
}
并且:
fname.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after){
}
@Override
public void afterTextChanged(Editable s)
{
Pattern mPattern = Pattern.compile("[A-Za-z]{2,20}$");
Matcher matcher = mPattern.matcher(s.toString());
if(!matcher.matches()) // on Success
{
fname.setError("Please make sure you input a valid first name");
}
}
});
我感到困惑的是......每当页面第一次加载时,都会显示错误消息,但是当我进入 EditText 并输入一些内容时,如果我删除内容,错误消息会不坚持。那么我如何保持这个验证持续存在???因为程序正在形成的方式,看起来它不会很好地验证任何东西。你们知道一些关于 android 中正则表达式的好链接以及完整的例子,请推荐。
而且,我将如何将 Pattern 和 Matcher 方法放在 onTextChanged 或 beforeTextChanged 中影响输出?