如果Exception不在Activity类中,则通知用户

时间:2012-07-16 20:01:46

标签: android

我的Activity拥有一名成员member_one,该成员拥有另一名成员member_two,该成员可以投放Exception。如果Toast发生,我需要向用户显示Exception。为了显示Toast我需要将Exceptionmember_tow投放到member_one,然后从member_one投放到我的Activity。这种方法会带来很大的变化,我不想这样做。可能我只是想错了,有没有简单的方法来处理异常?

2 个答案:

答案 0 :(得分: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);
   ...

} 

答案 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();
   }
}

同样,我无法保证这是安全的做法,我希望能听到更好的解决方案。