2013-01-18 35 views
28

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

假定以下情形(只是举例,这个问题涉及到共同的问题,当可能发生在服务错误,在线程等):

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

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

  1. 显示祝酒词 - 最简单的方式,但它的地方,是不是最好的(许多错误,我们会看到许多烤面包,即使应用程序在后台运行)
  2. 显示错误屏幕(例如,gmail在列表底部显示“无连接”,并提议重试)

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

回答

25

我已经使用了alertDialog ..指形象。进一步谷歌它

供用户注意。

enter image description here

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

for form Validation edit

互联网连接失败

enter image description here

为internent连接与重试失败。

enter image description here

更新1

有关说明,我们使用Toast 例如通知您Email was sent Successfully.我们可以用敬酒如用户一些自动终止信息/邮件下面

enter image description here

Toast.makeText(上下文,“电子邮件发送成功ly。“,持续时间)。显示()

注:用户不能使用默认敬酒互动,又见Custom Toast Layout

另一种选择是使用新的Snackbar

enter image description here

希望这将有助于

+2

谢谢。但至少有一个代码示例会很好。那个警告图标是一个内置的Android drawable还是你自己的drawable之一? – RenniePet

+1

当发生非常重要的事情时,您应该只显示一个对话框,并且您需要确认用户,或者您需要绝对确定他们需要知道。例如:如果没有互联网连接,只有在没有互联网的情况下才能显示任何内容,如果缓存内容并且应用程序仍然可用但不新鲜,则显示一个对话框,您会显示类似于油煎面包块或应用内通知的内容并尝试在后台访问您的数据并刷新。小心对话,这是非常侵入性的 – MariusBudin

1

我想说,它取决于你的应用程序目前是否有可见的活动或不活动。如果是这样,你可以使用任何已经建议的技术,而不会混淆用户关于上下文等。

如果错误/消息源自后台代码,例如服务,并且您的应用程序未处于活动状态,那么notification是件好事替代。另外,请查看developer网站上描述的准则/模式。

12

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

,谷歌提出的Material Design Guide处理这些类型的消息,这两种方法是:

Dialogs(在这种情况下,警告对话框):

Alert Dialog

Snackbars

Snackbar

要你以你的示例为例:某些数据是从远程服务器请求的,但由于某些错误或异常,提取失败并且没有数据返回。

此时,错误消息的类型将取决于应用程序如何从该点开始运行,而没有该数据。如果应用程序按照原样运行,意味着获取与后台更新类似,则适当的显示应该是Snackbar。为什么?

从指南:

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

轻量级是真正的原因。如果应用程序在没有获取后台数据的情况下运行,则不应该通过消息阻止UI。只要让用户知道事情没有按照他们应该的方式工作,以便他可以做些事情,如果他在意的话。

下面是从guide截取的示例:

enter image description here

对于代码:所述Developer Docs on Snackbars

决不使用吐司。吐司太小,太短暂,可能会被忽视。使用小吃店。

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

没有人希望只看到一个空白屏幕,如果你不能用数据填充它,你需要给用户一个屏幕,他们可以执行其他功能,即使这是退出应用程序。

从指南提醒:

警报通知用户,需要在继续之前他们 确认或确认的情况或行动。根据所传输信息的严重程度和影响,它们在外观上稍有差异。

警报是中断的,紧急的,并且阻止用户在作出决定前继续执行 。

歧从小吃店:一个动作之后与此相反警报,小吃店 目前可选的,但重要的信息或动作,通常 出现。例如,使用警报确认丢弃草稿 。使用快餐栏来提交撤销操作,因为 该操作是可选的,用户可以继续其主要的 任务而不采取任何措施。

因此,如果没有该数据的应用程序将无法正常工作,请使用Alert Dialog