LoginSignup
1
0

More than 3 years have passed since last update.

Fragmentでの遷移(スタック積む)してバックキー制御について

Posted at

*学習メモです。

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

1
0
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
1
0