76

好的,所以我只有一个 EditText 字段和一个按钮,按下它会触发 AsyncTask。

EditText playerName = (EditText)findViewById(R.id.playerEditText);

if(playerName.getText().toString().length() == 0 )
    playerName.setError("Player name is required!");
else {
    // do async task
}

问题是即使在我输入有效文本进行搜索后,错误消息似乎仍然存在。一旦 EditText 不为空,有没有办法消除错误?

4

7 回答 7

148

在你的 else 括号中, put playerName.setError(null),这将清除错误。

于 2012-07-24T23:56:35.240 回答
54

API 文档:“当任何关键事件导致 TextView 的文本发生更改时,图标和错误消息将重置为 null。” 虽然不是这样 - 因此我们可以将其视为错误。

如果您使用诸如 textNoSuggestions、textEmailAddress、textPassword 之类的 inputType,则在键入字符后会取消设置错误。几乎与记录的一样,但又不完全正确 - 当您删除一个字符时,错误仍然存​​在。看来,使用 addTextChangedListener 和 setError(null) 的简单解决方法可以获得承诺的行为。

此外还有关于 Android 4.2 上图标丢失的帖子。所以要小心使用。

于 2014-05-11T23:56:10.577 回答
12

试试这个监听器:

      playerName.addTextChangedListener(new TextWatcher()
                {
                    public void afterTextChanged(Editable edt){
                        if( playerName.getText().length()>0)
                        {
                             playerName.setError(null);
                        }
                    }
于 2014-07-18T15:29:01.670 回答
3

如果要隐藏错误消息,一种方法是在编辑框上应用 onclicklistener,然后

editTextName.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            editTextName.setError(Null)
        }
    });
于 2015-04-15T12:34:58.127 回答
2

下面的代码对我有用

@OnTextChanged(
            value = R.id.editTextName,
            callback = OnTextChanged.Callback.TEXT_CHANGED)
    public void afterInput(CharSequence sequence) {
        editTextName.setError(null);
        editTextName.setErrorEnabled(false);
    }

'

editTextName.setError(null) 将清除错误消息。

editTextName.setErrorEnabled(false) 将删除额外的填充。

于 2018-05-18T09:28:53.570 回答
0

将 TextWatcher 添加到您的 EditText 和 onError,使用et.setError(errorMessage)其他方式显示错误消息,您可以删除错误消息和错误图标,如下所示。

// to remove the error message in your EditText
et.setError(null);

// to remove the error icon from EditText.
et.setCompoundDrawables(null, null, null, null);
于 2019-04-09T14:07:25.760 回答
0

这段代码对我有用。

textInputSetting(binding.emailEdt)

fun textInputSetting(view: TextInputLayout) {
    view.apply {
        this.editText!!.addTextChangedListener {
            if (this.editText!!.text.isNotEmpty()) {
                this.error = null
                this.isErrorEnabled = false
            }
        }
    }
}
于 2022-01-02T23:00:22.080 回答