Я обнаружил сбой в журнале сбоев «NullPointerException: попытка вызвать виртуальный метод «void android.view.View.getBoundsOnScreen (android.graphics.Rect)» для ссылки на нулевой объект», и я проверил некоторые предложения stackoverflow для этого сбоя. Я нашел ссылку ниже, предлагающую использовать подсказку в TextInputLayout вместо TextInputEditText, поэтому я хочу знать, что отличает ее?
Ниже ссылка предлагает использовать подсказку в TextInputLayout: ТАК Google показывает, чтобы использовать подсказку в TextInputEditText: Google_Рекомендация
Я попробовал подсказку как в TextInputLayout, так и в TextInputEditText. Подсказка одинаково хорошо работала в обоих местах.
Я хотел бы знать, в чем разница между обоими методами и какой из них более подходит для использования.
В библиотеку поддержки дизайна была введена TextInputLayout для отображения плавающей метки на EditText или TextInputEditText. EditText или TextInputEditText должны быть заключены в TextInputLayout, чтобы отобразить плавающую метку.
Практическое правило : TextInputLayout должен обернуть TextInputEditText
где разместить подсказку
согласно официальному документация
The hint should be set on the TextInputLayout, rather than the EditText. If a hint is specified on the child EditText in XML, the TextInputLayout might still work correctly; TextInputLayout will use the EditText's hint as its floating label. However, future calls to modify the hint will not update TextInputLayout's hint. To avoid unintended behavior, call setHint(CharSequence) and getHint() on TextInputLayout, instead of on EditText.
Примечание, что TextInputEditText является особым подклассом EditText, предназначенным для использования в качестве дочернего элемента TextInputLayout.
надеюсь, это полезно
Это похоже на то, что у вас есть EditText, поскольку textInputEdittext является подклассом редактирования текста, поэтому вы применяете те же правила к TextInputEdittext.
Я заметил, что если я использую редактор макета студии Android, чтобы добавить элемент TextInputLayout, он помещает подсказку во вложенный TextInputEditText. Редактор делает это неправильно или это правильное размещение?
Отвечаю, поскольку пока не могу комментировать.
В моем случае я получал упомянутый вами сбой только от устройств Huawei. Как только я переместил все свои подсказки в TextInputLayouts в своем приложении, все сбои прекратились.
Насколько я понимаю, в версии Android, на которой работает Huawei, отсутствует проверка нуля, что приводит к сбою.
Теперь я всегда размещаю свои подсказки на TextInputLayout.
Спасибо за ваш ответ. Что делать, если у меня есть ТекстВводРедактироватьТекст внутри TextInputLayout?