40

向用户显示错误消息的最佳方式是什么?

假设以下场景(例如,此问题涉及常见问题,何时可能在服务中发生错误,在线程中等):

  1. 我们为某些屏幕加载一些数据
  2. 发生错误(互联网不可用,服务器异常,其他异常......)

如何显示错误?可能的解决方案:

  1. 显示 toast - 最简单的方法,但不是最好的(对于许多错误,我们会看到很多 toast,即使应用程序在后台运行)
  2. 在屏幕某处显示错误(例如 gmail 在列表底部显示“无连接”并建议重试)

你的经验是什么?你如何显示用户错误?是否有一些指南解释什么是最好的方法?

4

4 回答 4

31

我使用了 alertDialog .. 参考图片。进一步谷歌它

供用户注意。

在此处输入图像描述

对于表单验证编辑文本使用editText.setError("Your error message")方法

用于表单验证编辑

互联网连接失败

在此处输入图像描述

内部连接失败,重试。

在此处输入图像描述

更新 1

为了显示一些自动终止信息/消息,我们使用Toast 例如通知用户您的Email was sent Successfully.我们可以使用 Toast,如下所示

在此处输入图像描述

Toast.makeText(context, "电子邮件发送成功。", duration).show()

注意:用户无法与默认 toast 交互,另请参阅自定义 Toast 布局

另一种选择是使用新的Snackbar

在此处输入图像描述

希望这会有所帮助

于 2013-01-18T14:15:08.820 回答
21

这取决于应用程序,以及应用程序遇到此错误后能够执行的操作。

Google 在Material Design Guide中建议处理这些类型的消息的两种方法是:

对话框(在本例中为警报对话框):

警报对话框

小吃店

小吃店

使用您的示例:从远程服务器请求了一些数据,但由于某些错误或异常,获取失败并且没有返回数据。

此时,错误消息的类型将取决于应用程序在没有该数据的情况下将如何运行。如果应用程序将按原样执行,这意味着获取类似于后台更新,那么要显示的适当内容将是 Snackbar。为什么?

从指南:

Snackbars 通过在屏幕底部显示一条简短消息来提供有关操作的轻量级反馈。Snackbars 可以包含一个动作。

轻量级确实是这里的原因。如果应用程序在没有后台数据获取的情况下运行,则不应使用消息阻止 UI。只要让用户知道事情并没有按照他们应该的方式进行,这样他就可以在他关心的时候做点什么。

这是取自指南的示例:

在此处输入图像描述

代码:关于 Snackbars 的开发者文档

永远不要使用吐司。Toast 太小,太简短,可能会被忽视。使用小吃吧。

但是,如果您的应用程序无法运行,或者在没有该数据的情况下只会显示空白屏幕,则正确的做法是显示警报对话框。

没有人希望看到的只是一个空白屏幕,如果您不能用数据填充它,您需要为用户提供一个屏幕,他们可以从中执行替代功能,即使那是退出应用程序。

来自警报指南:

警报通知用户在继续之前需要他们确认或确认的情况或操作。根据所传达信息的严重程度和影响,它们的外观略有不同。

警报是中断性的、紧急的,并且在用户做出决定之前会阻止用户继续操作。

消除 Snackbars 的歧义:与 Alerts 相比,Snackbars 提供可选但重要的信息或操作,并且通常出现在操作之后。例如,使用提醒确认放弃草稿。使用快餐栏呈现撤消操作,因为该操作是可选的,用户可以继续其主要任务而无需执行操作。

因此,如果应用程序在没有这些数据的情况下无法运行,请使用警报对话框

于 2015-09-12T21:01:44.420 回答
5

除了吐司之外的任何东西。查看面包块: http ://android.cyrilmottier.com/?p=773

于 2013-01-18T13:53:17.283 回答
1

我会说这取决于您的应用程序当前是否有可见的活动活动。如果是这样,您可以使用已经建议的任何技术,而不会使用户对上下文等感到困惑。

如果错误/消息来自后台代码(例如服务),并且您的应用程序未处于活动状态,则通知是一个不错的选择。另外,请查看开发人员网站上描述的指南/模式。

于 2013-01-18T14:43:58.447 回答