Adsenseバナー

2010年12月30日木曜日

子Activityからアプリを終了する方法

各画面ごとにActivityを作って問題になったのが、子Activityからアプリを終了するときどうする?ということでした。
Activity#finish()を呼んでも、それを呼び出したActivityしか終了しないので、Backキーと同じことになる。
子Activityから親Activityが簡単に取得できないようで、やり方が見つかりませんでした。

で、どうしたかというと、Activityの呼び出しにActivity#startActivity()ではなく、Activity#startActivityForResult()で子Activityの終了コードを見ることにしました。
子の終了コードが「終了」なら、自分もfinish()する。
さらに、自分に親がいることも考えて、自分の終了コードを「終了」にする。
つまり、以下のようなコード。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_CLOSE) {
        setResult(RESULT_CLOSE);
        finish();
    }
}

これを全部のActivityに仕込んでおけばOK。
これを仕込んだBaseActivityを作ろうかとも思ったけど、TabActivityを継承してるやつとかもあって、そういった拡張Activityごとに用意するのが面倒だったので、とりあえず今回は見送りました。

0 件のコメント:

コメントを投稿