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