我有以下验证
private boolean validatePin() {
String pin = pinTxt.getText().toString().trim();
if (TextUtils.isEmpty(pin) || pin.length() != 4) {
pin_layout.setError(mContext.getString(R.string.err_msg_pin));
requestFocus(pinTxt);
return false;
} else {
pin_layout.setErrorEnabled(false);
}
return true;
}
我在afterTextChanged上这样调用它:
public void afterTextChanged(Editable editable) {
switch (view.getId()) {
case R.id.pinTxt:
validatePin();
break;
}
}
我得到的是错误文本显示我第一次在editText中输入少于4个字符,但是当我删除所有内容并再次开始输入时,我没有收到任何错误消息。有没有想法如何在每次开始在editText中输入时显示此错误消息,而不仅仅是第一次?
答案 0 :(得分:1)
将您的代码更改为:
pinTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
validatePin();
}
});
和
private boolean validatePin() {
String pin = pinTxt.getText().toString().trim();
if (TextUtils.isEmpty(pin) || pin.length() != 4) {
pin_layout.setError(mContext.getString(R.string.err_msg_pin));
requestFocus(pinTxt);
return false;
} else {
pin_layout.setError(null);
}
return true;
}
所以我在这里设置了textInputLayout
的错误,当错误条件未满足时,它会输入引脚并设置错误null
,这将隐藏错误。
答案 1 :(得分:0)
在xml
的编辑文本视图中尝试此操作android:inputType="textNoSuggestions"
答案 2 :(得分:-1)
pinTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
validatePin();
}
});
试试这个,addTextChange监听器到EditText。现在将验证代码放在TextWatcher
的AfterTextChanged函数中