2013-01-18 45 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