Ответ 1
В скобке else поставьте playerName.setError(null)
, который очистит ошибку.
Итак, у меня есть только поле 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 не пуст?
В скобке else поставьте playerName.setError(null)
, который очистит ошибку.
Документация по API: "Значок и сообщение об ошибке будут reset равными нулю, если любые события ключа вызывают изменения в тексте TextView". Хотя это не так, и поэтому мы можем считать это ошибкой.
Если вы используете inputType, например textNoSuggestions, textEmailAddress, textPassword, ошибка будет отменена после ввода символа. Почти как задокументировано, но опять же не совсем точно - при удалении персонажа ошибка остается. Кажется, простой обходной путь с addTextChangedListener и setError (null) может достичь обещанного поведения.
Кроме того, есть сообщения о потере значка на Android 4.2. Поэтому используйте с осторожностью.
Попробуйте прослушиватель:
playerName.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable edt){
if( playerName.getText().length()>0)
{
playerName.setError(null);
}
}
Если вы хотите скрыть сообщение об ошибке одним способом, вы примените onclicklistener в поле редактирования, а затем
editTextName.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editTextName.setError(Null)
}
});
Ниже код работал для меня
@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)
дополнительный отступ.
Добавьте TextWatcher к вашему EditText и onError, покажите свое сообщение об ошибке, используя et.setError(errorMessage)
иначе вы можете удалить сообщение об ошибке и значок ошибки, как 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);