1

こんにちは、Android NavigationManager は初めてです。

図に示すように、nav_graph に接続されたフラグメント A、B、および C を検討してください。図式

基本的に私が達成しようとしているのは、フラグメント A から直接 C に移動することです。

A->C、背面ボタン: C->B->A

NavigationManager を使用して実際にフラグメント B を表示せずにバックスタックにフラグメント B を追加する方法はありますか?

4

1 に答える 1

2

したがって、ドキュメントを読むときはもっと注意する必要があるようです。このサイトを見逃していました。

カスタム バック動作のメカニズムがあります。私がする必要があったのは、このコードをフラグメント C クラスに追加することだけでした。

//use onResume if you want to handle orientation change
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val callback = requireActivity().onBackPressedDispatcher.addCallback(this, object :
        OnBackPressedCallback(true) {
        override fun handleOnBackPressed() {
            val options = NavOptions.Builder()
                .setPopUpTo(R.id.fragmentC, true)
                .build()

            navController.navigate(R.id.fragmentB, options)
        }
    })
}

私の考え方はずっと間違っていました。C を起動するときに B をバックスタックに追加しようとしていました。代わりに、[戻る] ボタンを押したときにフラグメント C で行う必要があったのは、B に進み、バックスタックから C を削除することでした。

于 2019-05-28T12:48:01.133 に答える