*学習メモです。
FragmentからFragmentへ(スタックをつむ)
そもそもスタックを積むとは
フラグメントの上にフラグメントがくるようなイメージです。
画面(Fragment)を重ねる感じです。
sample.kt
fragmentManager: FragmentManager = getFragmentManager()
// BackStackに積む
fragmentManager.addToBackStack(null)
// 1つ前に戻る。
fragmentManager.popBackStack()
バックキー制御について
Androidについてるバックキーの制御方法
利用にはandroidxのappcompat:1.1.0以上、activity:1.0.0以上が必要です。
app/build.gradle
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
implementation 'androidx.activity:activity:1.0.0-alpha06'
}
使い方
今までの書き方は省略します。
以下のようにします。
Fragment.kt
class EndFragment : Fragment() {
val mainActivity: MainActivity
get() = (activity as MainActivity)
var isOverrideBack = false
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
mainActivity.onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback {
override fun handleOnBackPressed(): Boolean {
if (isOverrideBack) {
//tureを返すとなにもしないので、バックの制御など書いたりできる。
//isOverrideBackをどこかの処理でtrueにして、バックキーが押されたタイミングでアラートを表示とかもできそう。
return true
}else {
// 先ほど積まれたスタックがあれば1つ戻る。
return false
}
}
})
}
}
工夫できる点ありましたら、コメントいただけると幸いです。
参考記事
https://qiita.com/tarumzu/items/d6b18447ad24b5b5bfa2
http://androhi.hatenablog.com/entry/2019/01/31/201235