我的Activity
拥有一名成员member_one
,该成员拥有另一名成员member_two
,该成员可以投放Exception
。如果Toast
发生,我需要向用户显示Exception
。为了显示Toast
我需要将Exception
从member_tow
投放到member_one
,然后从member_one
投放到我的Activity
。这种方法会带来很大的变化,我不想这样做。可能我只是想错了,有没有简单的方法来处理异常?
答案 0 :(得分:2)
到目前为止,我知道这个问题会有两个解决方案。
Context
传递给您member_one
,member_two
,然后使用Context
制作Toast。 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);
...
}
答案 1 :(得分:0)
我做过的一件事(尽管我不确定它是否因为我是新手开发人员而干净利落)是将Activity
作为参数传递出去:
foo.bar(this, ...);
然后,我可以在其他方法中捕获异常,如下所示:
bar(final Activity activity, ...)
{
try
{
// Whatever
}
catch (Exception e)
{
Toast.makeText(activity, "You dun goofed!", Toast.LENGTH_SHORT)
.show();
}
}
同样,我无法保证这是安全的做法,我希望能听到更好的解决方案。