Я нашел проблему при создании формы входа. Я показываю некоторые ошибки в моем TextInputLayout и отключает их, когда пользователь правильно заполняет.
Я установил его с помощью
mTextInputLayout.setError("This field is required");
и отключите его с помощью
mTextInputLayout.setError(null);
Проблема заключается в том, что по-прежнему имеются прокладки пустого объекта TextView, в котором отображается сообщение об ошибке. Поэтому я попытался полностью отключить ошибку, установив
mTextInputLayout.setErrorEnabled(false);
и он работает и выглядит отлично, НО я не могу его снова включить. При вызове
mTextInputLayout.setErrorEnabled(true);
mTextInputLayout.setError("This field is required");
снова Я просто вижу строку чтения, а не сообщение об ошибке, поэтому кажется, что TextView, который показывал сообщение об ошибке, был уничтожен и не был создан снова.
Я читаю здесь, что объекты TextView уничтожаются, когда вызывается setErrorEnabled(false)
и кажется, что он не создан снова. Ошибка или функция?
Источник для этого элемента управления еще не доступен в AOSP, поэтому я использовал декомпилятор, встроенный в Android Studio, для изучения кода, чтобы понять, что происходит неправильно. Я обнаружил, что setErrorEnabled() фактически создает и уничтожает объект TextView, тогда как я ожидал, что он просто переключит видимость.