2016-04-28 2 views
4

Я использую TextInputLayout из com.android.support:design:23.3.0TextInputLayout не появляется сообщение об ошибке после очистки

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

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

enter image description here

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

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

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

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

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

+0

Вы пытались установить 'setErrorEnabled (true)' прямо перед установкой ошибки во второй раз? Я знаю, что это не должно быть приемлемым поведением объекта, но, возможно, в какой-то момент оно возвращается к 'false' ..... – Opiatefuchs

+0

в противном случае, пожалуйста, покажите свой файл градиента .... – Opiatefuchs

+0

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

ответ

10

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

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

для очистки:

setError(null); 
setErrorEnabled(false); 

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

+1

Спасибо, что помогли мне в этом вопросе. Я думаю, что setErrorEnabled (true) может быть ненужным, поскольку это вызвано внутри setError ("yourString") –

0

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

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

Таким образом, при повторной проверке вы получите пустую строку.

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

mInputEmail.setText(""); 
mInputPassword.setText(""); 
+0

Прошу прощения, что это решение не решило проблему. –

Смежные вопросы