Привет, я новичок в Android NavigationManager.
Рассмотрим фрагменты A, B и C, связанные в nav_graph, как показано на рисунке.
По сути, я пытаюсь добиться перехода от фрагмента A непосредственно к C. Но при нажатии кнопки «Назад» я хочу, чтобы он вел себя так, как если бы я был первым во фрагменте B.
Итак, A->C, на задних кнопках: C->B->A
Есть ли способ, как я могу добавить фрагмент B в стопку, фактически не показывая его с помощью NavigationManager?
@NickBapu Спасибо, но я пытался сделать это, не перезаписывая метод onBack. Вот почему я специально попросил решение с помощью NavigationManager.
Посмотрите этот ответ stackoverflow.com/questions/12854105/…
Так что, кажется, я должен быть более осторожным при чтении документации. Я пропустил этот сайт.
Существует механизм для пользовательского обратного поведения. Все, что мне нужно было сделать, это добавить этот код в класс фрагмента 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 из обратного стека.
проверить мой старый отвечать по этому вопросу типа.