TextInputLayout не показывает сообщение об ошибке после очистки

Я использую TextInputLayout из com.android.support:design:23.3.0

Когда я впервые применяю ошибку, она отображается правильно.

mInputPassword.setError(getString(R.string.error_invalid_password));
mInputEmail.setError(getString(R.string.error_field_required));

При следующей попытке входа я очищаю ошибку.

mInputEmail.setError(null);
mInputPassword.setError(null);

Затем я запускаю проверку и снова устанавливаю ошибку, используя тот же код, что и выше, но на этот раз применяется красная линия, но текст ошибки отсутствует.

Кто-нибудь имеет какие-либо идеи о том, почему это может происходить, или сталкивался с подобными ситуациями?

Я видел что-то подобное, о котором здесь сообщалось, но это для более старой версии библиотеки дизайна, и я не знаю, является ли это все еще проблемой в версии, которую я использую,

2 ответа

Решение

Вы просто должны сделать эти шаги:

setErrorEnabled(true);
setError("error");

для очистки:

setError(null);
setErrorEnabled(false);

Повторите первый шаг, чтобы установить новую ошибку. setError(null) очищает сообщение об ошибке и значок, так что я думаю, что представление, чтобы показать просто исчез и setErrorEnabled(false) сбросит его.

Вы очищаете строку сообщения об ошибке:

mInputEmail.setError(null);
mInputPassword.setError(null);

Поэтому, когда вы повторно запустите проверку, вы получите пустую строку.

Если вы хотите, чтобы сообщение об ошибке исчезло, удалите ошибочный текст из textview:

mInputEmail.setText("");
mInputPassword.setText("");
Другие вопросы по тегам