Я обнаружил проблему при создании формы входа. Я показываю некоторые ошибки в своем 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, тогда как я ожидал, что он просто переключит видимость.