在不触发提交按钮的情况下验证edittext



我正在尝试在不触发提交按钮的情况下验证Edittext字段。EditText应该在用户输入数据时进行验证。我有一个验证器类,它工作得很好,但如何在不触发保存或提交按钮的情况下调用错误消息。我看过textwatcher和onkeylistener。但最好的方法是什么?

mUsername = (EditText) findViewById(R.id.EditTextUsername); 
if(mUsername != null && DataUtil.checkDigits(mUsername)) 
{ 
     mUsername.setError("enter one digit at least"); 
}

其中一种方法是您的活动实现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
}

这将在任何更改时验证您的编辑文本(而不是单击或触摸按钮)。

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) {
        }
    });

希望能有所帮助。

您可以在下面尝试此代码

mEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        //write your code
    }
});

当你在EditText中输入完你的文本时,这个代码就会累积起来,这意味着当你关注其他视图时。。。因此,这是一个更好的解决方案,因为验证将在用户完成输入数据时运行,而不是为您输入的每个字符运行相同的代码。

最新更新