10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Android】画面遷移時に遷移元のActivityを終了する

Last updated at Posted at 2020-08-22

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を終了できます。

たとえば、ログアウトをし、ログイン画面に遷移した後に戻るボタンを押した際は、ログアウト画面に戻らせたくないので、この実装が使えるかと思います!

参考

Android ログイン後にログイン画面に戻れないようにしたい

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?