В некоторых, но не во всех устройствах, на которых запущен Jelly Bean (4.2.1), отсутствует значок ошибки восклицательного знака, который должен появиться на TextView
(или, чаще всего, EditText
), который имеет ошибка, установленная на нем через TextView.setError(CharSequence error)
.
В Galaxy Nexus определенно отсутствует значок.
Эффект заключается в том, что статус ошибки, установленный setError
, проявляется только тогда, когда EditText
имеет фокус. Это делает setError(...)
гораздо менее полезным, поскольку он часто используется, чтобы побудить пользователей вернуться к этому EditText
, чтобы исправить проблему. Например, у вас есть стандартный экран входа в систему с именами имени пользователя и пароля, которые проверяются, когда пользователь нажимает кнопку отправки. Сообщение об ошибке проверки, установленное в форме имени пользователя, не будет отображаться, если пользователь не вернется к этой форме - это то, что иконка ошибки предназначена для их поощрения!
Чтобы проверить: (может быть более доступный EditText, но этот очень широко доступен)
- Открыть настройки
- Выберите "Добавить учетную запись" (это в разделе "Учетные записи и синхронизация" на старых устройствах).
- Выберите "Google" в качестве типа учетной записи
- Выберите "Существующий" (после нажатия "Далее" и "Войти" на старых устройствах)
- Оставив пустой пробел 'Email'
EditText
, нажмите "Пароль"EditText
В этот момент на "Email" EditText
установлена ошибка, указывающая, что она не может быть пустой. На устройствах, которые не имеют этой проблемы, отображается обычный значок ошибки, который расширяется до полного сообщения об ошибке, когда EditText
имеет фокус. В Galaxy Nexuses работает Jelly Bean, значок не отображается, и ошибка видна вообще, когда "Электронная почта" EditText
снова имеет фокус и по-прежнему отсутствует значок в этой точке.
Это похоже на ошибку, но я хотел проверить, могут ли другие люди воспроизвести ее, иметь представление о том, что может быть проблемой, и иметь хорошее обходное решение.
Использование setError(CharSequence error, Drawable icon)
, вероятно, исправит все, но было бы неплохо иметь возможность использовать графику ошибок запасов в разных версиях Android.