こんにちは、Android NavigationManager は初めてです。
図に示すように、nav_graph に接続されたフラグメント A、B、および C を検討してください。
基本的に私が達成しようとしているのは、フラグメント A から直接 C に移動することです。
A->C、背面ボタン: C->B->A
NavigationManager を使用して実際にフラグメント B を表示せずにバックスタックにフラグメント B を追加する方法はありますか?
こんにちは、Android NavigationManager は初めてです。
図に示すように、nav_graph に接続されたフラグメント A、B、および C を検討してください。
基本的に私が達成しようとしているのは、フラグメント A から直接 C に移動することです。
A->C、背面ボタン: C->B->A
NavigationManager を使用して実際にフラグメント B を表示せずにバックスタックにフラグメント B を追加する方法はありますか?
したがって、ドキュメントを読むときはもっと注意する必要があるようです。このサイトを見逃していました。
カスタム バック動作のメカニズムがあります。私がする必要があったのは、このコードをフラグメント 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 を削除することでした。