输入后,EditText setError消息不会清除

时间:2012-07-24 23:32:00

标签: android

好的,所以我只有一个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不为空时立即删除错误?

6 个答案:

答案 0 :(得分:129)

在您的其他括号中,添加playerName.setError(null),这将清除错误。

答案 1 :(得分:51)

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

如果使用inputType,例如textNoSuggestions,textEmailAddress,textPassword,则在键入字符后将取消设置错误。几乎与文档有关,但同样不完全 - 当你删除一个字符时,错误仍然存​​在。 看来,使用addTextChangedListener和setError(null)的简单解决方法可以实现承诺的行为。

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

答案 2 :(得分:12)

试试这个听众:

      playerName.addTextChangedListener(new TextWatcher()
                {
                    public void afterTextChanged(Editable edt){
                        if( playerName.getText().length()>0)
                        {
                             playerName.setError(null);
                        }
                    }

答案 3 :(得分:3)

如果要隐藏错误消息,可以在编辑框中应用onclicklistener然后

editTextName.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            editTextName.setError(Null)
        }
    });

答案 4 :(得分:1)

以下代码为我工作

@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) 将删除其他填充。

答案 5 :(得分: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);