あひる裁縫店

好きなこと、技術のこと、くだらないこと

【Android】複数のActivityを一括終了させて遷移する

Androidの場合、遷移するとアクティビティはどんどんスタックされていく

通常の場合は

val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

のように遷移させていくと、


f:id:pg_0212:20190308220505p:plain


この図のように、アクティビティが積み重なっていく


前のアクティビティに戻るには

// Fourth Activityを削除
this.finish()

と書く


f:id:pg_0212:20190308221250p:plain

そうすると、Fourth Activityが終了されて、一番上に積まれているThird Activityが表示される




普通の遷移ではこれで良いのですが、この方法で First Activity まで戻ろうとすると、

1つずつアクティビティを終了しないといけない(普通これでいいんですけど)


Fourth Activity から First Activity に一気に戻るには、以下のようにするとよい

val intent = Intent(this, FirstActivity::class.java)
// setFlagsで今まで積み重ねたActivityをすべて破棄する
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent)

と書くと、Fourth Activity から今まで積み重ねたアクティビティをすべて破棄(終了)して、First Activityに遷移することができる

(シンプル!かつ短い!)


意外と遷移した時に、アクティビティがどうなっているかなど忘れがちなので、注意して設計する必要がある