例えば 画面1→画面2→画面3と遷移した後画面3→画面1と戻りたい時がある。そのような時finish()を使うこともできるが、画面が多いとうっとおしくなる。そんな時setFlags()というメソッドを見つけたので使ってみた。
方法
新たに画面1のアクティビティを起動して、これまでに遷移してきた画面をスタックから削除することで実現できる。
Intent intent = new Intent(SubActivity2.this, MainActvity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //この引数は「スタックをクリア」を表す
startActivity(intent);
Intent.setFlags()
今回はスタッククリアの引数を使ったが、他にも引数がある。参考URLに乗せておいた。
画面の内容を変えたくなかったので、スタックにある画面1を使いまわす方法も考えたが、画面2,3が残るのが嫌だったのでスタッククリアを使った。
感想
setFlags()の引数はいろいろあるので、うまくやればスタックの画面を使いながら不必要な画面だけクリアするということもできるかもしれない。
参考URL
・AndroidでActivityのスタックを削除する方法
http://9ensan.com/blog/smartphone/android/android-activity-stack-delete/
・intent.setFlagsメソッドの引数について
https://androidroid.info/android/activity/568/