我的Activity
持有會員member_one
持有另一名會員member_two
,它可以拋出Exception
。如果此Exception
發生,我需要向用戶顯示Toast
。爲了顯示Toast
我需要從member_tow
到member_one
然後從member_one
到我的Activity
丟Exception
。這種方法導致了很大的變化,我不想這樣做。可能我只是想錯了,有沒有簡單的方法來處理異常?我已經做了(雖然我不知道這是否是乾乾淨淨的,因爲我是一個新手開發者)通知用戶,如果發生例外情況不在活動類別
回答
到目前爲止,我知道會有兩個解決方案的問題。
- 通
Context
你member_one
,member_two
,然後使用該Context
做吐司。Like Toast.makeText(mContext, "Exception Occurred", Toast.LENGTH_SHORT).show();
第二條本辦法將通過Interface
- 製作一個Interface
方法在你的類member_one
等
像
public interface OnErrorOccured {
public void whatIsErr(String msg);
}
OnErrorOccured onError;
public void setOnDetailsLoadListener(OnErrorOccured onError) {
this.onError = onError;
}
`
,並當過你Exception
通話onError.whatIsErr(e.toString());
,並在主Activity
member_one.setOnErrorListener(mErrorOccured);
OnErrorOccured mErrorOccured =new OnErrorOccured() {
@Override
public void whatIsErr(String msg) {
// Do what ever you want..show Toast, or do any UI update
}
};
程序員如何其他知道,如果他們想使用他們需要設置監聽器,這些類中的一個?
對此,您強制構造函數傳遞一個偵聽器。
像
public yourConstructor(OnErrorOccured errorListener,.....)
{
this.setOnErrorListener(errorListener);
...
}
這個'Interface'方法似乎比我的解決方案更清潔(不傳遞不需要的參數)。我肯定會開始使用它。 – 2012-07-16 20:46:56
,它也'靈活':) – 2012-07-16 20:51:33
這樣做是否安全?其他程序員如何知道他們是否想要使用這些類中的一個來設置偵聽器? – Eugene 2012-07-17 09:12:15
一件事是通過Activity
像這樣的參數:
foo.bar(this, ...);
然後,我可以捕獲該異常中的其他方法,像這樣:
bar(final Activity activity, ...)
{
try
{
// Whatever
}
catch (Exception e)
{
Toast.makeText(activity, "You dun goofed!", Toast.LENGTH_SHORT)
.show();
}
}
同樣,我也不能保證,這是安全的做法,我很想聽到一個更好的解決方案。
- 1. 完成活動時的例外情況
- 2. BroadcastReceiver發送通知並更新用戶界面,如果活動,活動
- 3. 當活動完成時會發生什麼情況,如果在該活動中不停止動畫?
- 4. 如何在不知道類型的情況下實例化通用列表
- 5. 通知主叫類事情發生
- 6. 如果情況屬實,通知?
- 7. 如何在不禁用URL的情況下隱藏Magento中的活動類別?
- 8. 如果我在Play商店中更改類別,會發生什麼情況?
- 9. 如果正在運行的活動已關閉,那麼活動HTTP調用會發生什麼情況?
- 10. 如果任何異常情況發生
- 11. 在不知道類型的情況下傳遞類的實例
- 12. 例外情況:com.soomla.store.exceptions.VirtualItemNotFoundException:使用
- 13. 發送來自非活動類別的通知
- 14. 如何通知用戶新的活動?
- 15. 在用戶不知道的情況下發送電子郵件
- 16. 如果一個班級有多個類別,會發生什麼情況?
- 17. 在後臺接收推送通知並在用戶不知情的情況下創建本地通知
- 18. 如何通知不活動的活動?
- 19. 不要啓動內部的活動,如果情況
- 20. minimax:如果min不起作用會發生什麼情況
- 21. 如果我不調用transaction.close或transaction.rollback,會發生什麼情況?
- 22. 如果不使用Xmx會發生什麼情況?
- 23. 如果委託不存在,會發生什麼情況?
- 24. 開始活動時的例外情況Galaxy S5
- 25. 鼠標觸發不正常情況發生,如果HTML通過JQuery的
- 26. 在不離開當前活動的情況下將數據從活動傳遞到非活動類別?
- 27. 如果正在處理的活套正在退出,會發生什麼情況?
- 28. C++中例外情況下的例外
- 29. 通知發起活動
- 30. 通知活動發佈
通'Context'你'member_one','member_two',然後使用'Context'使''Toast'.like Toast.makeText(mContext 「的異常出現」 Toast.LENGTH_SHORT).show();' – 2012-07-16 20:07:36
將'Context'傳遞給這些輔助類是否是一個好習慣? – Eugene 2012-07-16 20:13:09
如果你想通知'用戶'你必須需要一個'上下文'。正如你所看到的每個View都需要'Context' ..另一個解決方案是:使用'Interface'方法。 – 2012-07-16 20:19:40