Лучшая практика отображения сообщений об ошибках
Каков наилучший способ отображения сообщений об ошибках пользователю?
Предположим следующий сценарий (например, этот вопрос относится к общей проблеме, когда ошибка может возникать в сервисе, в потоке и т.д.):
- Мы загружаем некоторые данные для некоторого экрана
- Происходит ошибка (Интернет недоступен, исключение сервера, другие исключения...)
Как показать ошибку? Возможные решения:
- Показать тосты - самый простой способ, но это не самый лучший (для многих ошибок мы увидим много тостов, даже если приложение работает в фоновом режиме)
- Показывать ошибку где-то на экране (например, gmail показывает "Нет соединения" в нижней части списка и предлагает повторить попытку)
Каков ваш опыт? Как вы показываете ошибки пользователя? Есть ли какие-то руководства, объясняющие, что является лучшим способом?
Ответы
Ответ 1
Я использовал alertDialog.. ссылку Изображения. futher google it
Для пользователя Внимание.
![enter image description here]()
для формы Текст редактирования проверки использует метод editText.setError("Your error message")
![for form Validation edit]()
для интернет-соединения не удалось
![enter image description here]()
для внутреннего подключения не удалось выполнить повтор.
![enter image description here]()
Обновление 1
Для отображения информации о автоматическом завершении/сообщении мы используем Toast
например, уведомить пользователя о том, что ваш Email was sent Successfully.
Мы можем использовать Toast, как показано ниже
![введите описание изображения здесь]()
Toast.makeText(контекст, "Сообщение отправлено успешно", продолжительность).show()
Примечание. Пользователь не может взаимодействовать с тостом по умолчанию, см. также Custom Toast Layout
Другой вариант - использовать новый Snackbar
![введите описание изображения здесь]()
Надеюсь, это будет полезно
Ответ 2
Это зависит от приложения и того, что приложение сможет сделать, когда оно встретит это
ошибка.
Два метода, которые Google предлагает в Руководстве по дизайну материалов для работы с этими типами сообщений:
Dialogs (в этом случае диалог оповещений):
![Alert Dialog]()
и Snackbars:
![Закусочная]()
Чтобы использовать ваш пример: некоторые данные запрашиваются с удаленного сервера, но из-за некоторой ошибки или исключения выборка завершается с ошибкой и данные не возвращаются.
В этот момент тип сообщения об ошибке будет зависеть от того, как приложение будет работать с этой точки, без этих данных. Если приложение будет работать так, как оно есть, значит, выборка была чем-то вроде обновления фона, подходящей вещью для показа была бы Snackbar. Почему?
Из руководства:
Закуски обеспечивают легкую обратную связь об операции, показывая короткое сообщение в нижней части экрана. Закуски могут содержать действие.
Легкий вес действительно является причиной здесь. Если приложение будет работать без этой фоновой выборки данных, вы не должны блокировать интерфейс с сообщением. Просто дайте знать пользователю, что все не так, как должно, так, чтобы он мог что-то сделать, если он заботится.
Вот пример, взятый из руководства :
![введите описание изображения здесь]()
Для кода: Документы разработчика в Snackbars
Никогда не используйте Toast. Тост слишком мал, слишком короткий и может пройти незаметно. Используйте закусочную.
Но, в сценарии, в котором ваше приложение не будет функционировать, или будет отображаться только пустой экран без этих данных, правильным было бы показать диалоговое окно оповещений.
Никто не хочет видеть ничего, кроме пустого экрана, и если вы не можете заполнить его данными, вам нужно предоставить пользователю экран, из которого они могут выполнять альтернативные функции, даже если это значит выйти из приложения.
Из руководства по оповещениям:
Предупреждения информируют пользователя о ситуации или действии, требующих их подтверждение или подтверждение перед продолжением. Они различаются слегка по внешнему виду, исходя из серьезности и сообщение передано.
Предупреждения являются прерывистыми, срочными и не позволяют пользователям продолжать пока они не примут решение.
и
Несогласование с помощью Snackbars: в отличие от Alerts, Snackbars представлять необязательную, но важную информацию или действия и обычно появляются после действия. Например, используйте оповещение для подтверждения отбросив проект. Используйте закусочную, чтобы представить действие отмены, потому что действие является необязательным, и пользователь может продолжить свою основную задача без принятия мер.
Итак, если приложение не будет работать без этих данных, перейдите с Alert Dialog.
Ответ 3
Ничего, кроме Тоста.
Проверьте Croutons:
http://android.cyrilmottier.com/?p=773
Ответ 4
Я бы сказал, что это зависит от того, будет ли ваше приложение в настоящее время иметь активную активность или нет. Если это так, вы можете использовать любой из предложенных методов, не запутывая пользователя о контексте и т.д.
Если сообщение об ошибке/возникает из фонового кода, например, службы, и ваше приложение неактивно, notification является хорошим альтернатива. Кроме того, ознакомьтесь с рекомендациями/шаблонами, описанными на developer сайте.