显示错误消息的最佳做法

时间:2013-01-18 13:48:24

标签: android

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

假设以下场景(例如,这个问题与常见问题有关,当在服务中,在线程等中可能发生错误时):

  1. 我们为某些屏幕加载了一些数据
  2. 发生错误(Internet不可用,服务器异常,其他例外......)
  3. 如何显示错误?可能的解决方案:

    1. 显示祝酒词 - 最简单的方法,但它不是最好的(对于许多错误,我们会看到许多错误,即使应用程序在后台运行)
    2. 在屏幕的某处显示错误(例如,gmail在列表底部显示“无连接”并建议重试)
    3. 你有什么经历?你如何显示用户错误?是否有一些指南解释什么是最好的方式?

4 个答案:

答案 0 :(得分:26)

我使用了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.我们可以像下面一样使用Toast

enter image description here

Toast.makeText(上下文,“电子邮件已成功发送。”,持续时间).show()

注意:用户无法与默认吐司互动,另请参阅Custom Toast Layout

另一种选择是使用新的Snackbar

enter image description here

希望这会有所帮助

答案 1 :(得分:14)

这取决于应用程序,以及应用程序在满足此要求后能够执行的操作 错误。

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

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

Alert Dialog

Snackbars

Snackbar

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

此时,错误消息的类型将取决于应用程序在该点上的运行方式,而不包含该数据。如果应用程序将按原样运行,意味着fetch类似于后台更新,则显示的适当内容将是Snackbar。为什么呢?

来自指南:

  

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

轻量级就是这里的原因。如果应用程序在没有获取后台数据的情况下运行,则不应使用消息阻止UI。只是让用户知道事情并没有按照他们应该的方式解决,以便他可以在他关心的情况下采取行动。

以下是guide

的示例

enter image description here

代码:Developer Docs on Snackbars

从不使用Toast。吐司太小,太短暂,可以不被人注意。使用Snackbar。

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

没有人只想看到空白屏幕,如果你不能用数据填充它,你需要给用户一个屏幕,他们可以从中执行替代功能,即使这是为了退出应用

来自警报指南:

  

警报告知用户需要他们的情况或行动   在继续之前确认或确认。他们不同   根据的严重程度和影响略有外观   消息传达。

     

警报是中断的,紧急的,并阻止用户继续进行   直到他们做出决定。

  

Snackbars的消歧:与Alerts,Snackbars相反   通常提供可选但重要的信息或行动   在行动之后出现。例如,使用警报进行确认   丢弃草案。使用快餐栏呈现撤消操作,因为   该操作是可选的,用户可以继续其主要操作   任务没有采取行动。

因此,如果应用在没有该数据的情况下无法运行,请使用Alert Dialog

答案 2 :(得分:5)

除了祝酒之外的任何东西。 看看面包丁: http://android.cyrilmottier.com/?p=773

答案 3 :(得分:1)

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

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