Есть ли способ перейти к месту назначения и добавить еще один в backtstack в NavigationManager?

Привет, я новичок в Android NavigationManager.

Рассмотрим фрагменты A, B и C, связанные в nav_graph, как показано на рисунке. Есть ли способ перейти к месту назначения и добавить еще один в backtstack в NavigationManager?

По сути, я пытаюсь добиться перехода от фрагмента A непосредственно к C. Но при нажатии кнопки «Назад» я хочу, чтобы он вел себя так, как если бы я был первым во фрагменте B.

Итак, A->C, на задних кнопках: C->B->A

Есть ли способ, как я могу добавить фрагмент B в стопку, фактически не показывая его с помощью NavigationManager?

проверить мой старый отвечать по этому вопросу типа.

Nick Bapu 28.05.2019 12:38

@NickBapu Спасибо, но я пытался сделать это, не перезаписывая метод onBack. Вот почему я специально попросил решение с помощью NavigationManager.

Yoda066 28.05.2019 12:43

Посмотрите этот ответ stackoverflow.com/questions/12854105/…

Sai Jayant 28.05.2019 12:57
1
3
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Так что, кажется, я должен быть более осторожным при чтении документации. Я пропустил этот сайт.

Существует механизм для пользовательского обратного поведения. Все, что мне нужно было сделать, это добавить этот код в класс фрагмента 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)
        }
    })
}

Мое мышление было ошибочным все это время. Я пытался добавить B в задний стек при запуске C. Вместо этого мне нужно было сделать во фрагменте C при нажатии кнопки «Назад» перейти к B и удалить C из обратного стека.

Другие вопросы по теме