EditText验证只运行一次

时间:2016-08-04 10:43:29

标签: android validation android-edittext

我有以下验证

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中输入时显示此错误消息,而不仅仅是第一次?

3 个答案:

答案 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函数中