MyActivity
拥有一个成员member_one
,该成员拥有另一个member_two
可以抛出Exception
. Toast
如果发生这种情况,我需要向用户展示Exception
。为了显示 aToast
我需要Exception
从member_tow
tomember_one
然后从member_one
to 我的Activity
. 这种方法会导致很大的变化,我不想这样做。可能我只是想错了,有没有简单的方法来处理异常?
问问题
96 次
2 回答
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);
...
}
于 2012-07-16T20:35:10.730 回答
0
我做过的一件事(虽然我不确定它是否干净,因为我是一个新手开发人员)是Activity
作为参数传递,如下所示:
foo.bar(this, ...);
然后,我可以像这样在其他方法中捕获异常:
bar(final Activity activity, ...)
{
try
{
// Whatever
}
catch (Exception e)
{
Toast.makeText(activity, "You dun goofed!", Toast.LENGTH_SHORT)
.show();
}
}
同样,我不能保证这是安全的做法,我很想听到更好的解决方案。
于 2012-07-16T20:09:43.890 回答