Myは、をスローできる別のメンバーをActivity
保持するメンバーを保持します。これが発生した場合、ユーザーに表示する必要があります。a を表示するには、 from からtoをスローし、次に fromから myにスローする必要があります。このアプローチは大きな変化につながりますが、私はそうしたくありません。間違っていると思うかもしれませんが、例外を処理する簡単な方法はありますか?member_one
member_two
Exception
Toast
Exception
Toast
Exception
member_tow
member_one
member_one
Activity
質問する
96 次
2 に答える
2
これまでのところ、この問題には 2 つの解決策があることがわかっています。
- を渡し
Context
てmember_one
、member_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 に答える