我建议使用 TextWatcher 验证用户的输入:
EditText textbox = new EditText(context);
textbox.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// Your validation code goes here
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
});
仅在 afterTextChanged 方法中处理验证,不要触及其他两个,如文档 http://developer.android.com/reference/android/text/TextWatcher.html。但是,每次输入更改时都会触发 afterTextChanged get ,因此如果用户输入单词“hello”,则在输入 h 时调用此方法,然后在输入 e 时再次调用,依此类推...此外,如果修改 edittext 值在 afterTextChanged 中, get 方法也被调用。
另一种方法是在 EditText 失去焦点时验证用户输入。为此,您可以使用:
textbox.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// Your validation code goes here
}
});
但请注意,某些小部件可能无法抓住焦点,因此您的 Edittext 永远不会丢失焦点(例如,使用按钮)。
此外,EditText 还提供了setError http://developer.android.com/reference/android/widget/TextView.html#setError%28java.lang.CharSequence%29方法,该方法用红色错误标记标记 edittext,并将传递给 setError 的文本显示给用户(该文本可以由您在调用 setError("Your error message") 时设置)。