我正在尝试验证Edittext字段而不触发提交按钮。当用户输入数据时,EditText应该被验证。我有一个正常工作的验证器类,但如何调用错误消息而不触发保存或提交按钮。我看过textwatcher和onkeylistener。但是最好的方法是什么,请帮忙?
mUsername = (EditText) findViewById(R.id.EditTextUsername);
if(mUsername != null && DataUtil.checkDigits(mUsername))
{
mUsername.setError("enter one digit at least");
}
答案 0 :(得分:1)
其中一种方法是您的活动实现android.text.TextWatcher
界面,然后您必须向TextChanged
个框添加EditText
个侦听器。
示例:
mUsername.addTextChangedListener(this);
然后覆盖afterTextChanged(Editable s)
方法,如下所示:
@Override
public void afterTextChanged(Editable s) {
// And you will place your validation code here
}
这将在任何更改时验证您的edittext(不是点击或触摸按钮)。
答案 1 :(得分:0)
TextWatcher似乎是更好的选择。
final EditText mUsername = (EditText) findViewById(R.id.editText1);
mUsername.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(DataUtils.checkDigits(mUsername)){
mUsername.setError("enter one digit at least");
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
希望它有所帮助。
答案 2 :(得分:0)
您可以尝试以下代码
mEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
//write your code
}
});
当您在EditText中输入文本时,此代码将会生成,这意味着在关注其他视图时...这是更好的解决方案,因为验证将在用户完成输入输入数据而不是运行输入数据时运行您输入的每个字符的代码。