Androidでアプリを作成する際に、戻るボタンでアプリを終了したいケースがあると思います。
Ex) ログイン画面から遷移後に戻るボタンを押したらアプリを終了させる。(ログイン画面に戻さない)
そのような際に、Activityを終了させる方法をまとめました。
ActivityからActivityでの遷移時
MainActivity.java
Intent intent = new Intent(getApplication(), SubActivity.class);
startActivity(intent);
finish();
画面A→B→C遷移時に、A,BのActivityを終了する(複数のActivityを終了したいとき)
Ex) A(初期画面)→B(サインイン画面)→C(メイン画面)でサインイン後、戻るボタンでアプリを終了させる時。
BActivity.java
Intent intent = new Intent(getApplication(), CActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish()
だと、メイン画面で戻るボタンを押すとA(初期画面)が表示されてしまいます。
サインイン画面のみActivityが終了されているためです。
FLAG_ACTIVITY_NEW_TASK: 新しいタスクを作成し、起動するActivityをそのタスクのスタックに追加する
FLAG_ACTIVITY_CLEAR_TASK: Activityを起動する前に、既存のタスクを破棄する。このフラグはFLAG_ACTIVITY_NEW_TASKと組み合わせてのみ使用できる。
#Fragmentから遷移時にActivityを終了する
currentFragment.java
Intent intent = new Intent(getActivity(), SecondActivity.class);
startActivity(intent);
MainActivity mainActivity = (MainActivity) getActivity();
mainActivity.finish();
Fragmentではfinish()
を利用できないため、Activityをインスタンス化し使えるようにする必要があります。
#まとめ
基本的はfinish()
でActivityを終了できます。
たとえば、ログアウトをし、ログイン画面に遷移した後に戻るボタンを押した際は、ログアウト画面に戻らせたくないので、この実装が使えるかと思います!