0

Myは、をスローできる別のメンバーをActivity保持するメンバーを保持します。これが発生した場合、ユーザーに表示する必要があります。a を表示するには、 from からtoをスローし、次に fromから myにスローする必要があります。このアプローチは大きな変化につながりますが、私はそうしたくありません。間違っていると思うかもしれませんが、例外を処理する簡単な方法はありますか?member_onemember_twoExceptionToastExceptionToastExceptionmember_towmember_onemember_oneActivity

4

2 に答える 2

2

これまでのところ、この問題には 2 つの解決策があることがわかっています。

  • を渡しContextmember_onemember_twoそれを使ってContextトーストを作ります。Like Toast.makeText(mContext, "Exception Occurred", Toast.LENGTH_SHORT).show();

2番目のアプローチは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

私がやったことの1つは(私は初心者の開発者なので、きしむようにきれいかどうかはわかりませんが)、次の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 に答える