0

MyActivity拥有一个成员member_one,该成员拥有另一个member_two可以抛出Exception. Toast如果发生这种情况,我需要向用户展示Exception。为了显示 aToast我需要Exceptionmember_towtomember_one然后从member_oneto 我的Activity. 这种方法会导致很大的变化,我不想这样做。可能我只是想错了,有没有简单的方法来处理异常?

4

2 回答 2

2

到目前为止,我知道这个问题有两种解决方案。

  • 传递Context给你member_onemember_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 回答