Как вернуться с последнего фрагмента на первый фрагмент и очистить весь back stack используя системные вызовы

«Как вернуться с последнего фрагмента на первый фрагмент и очистить весь back stack используя системные вызовы» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для очистки back stack и возврата к первому фрагменту используйте NavController с popUpTo и inclusive = true:

findNavController().navigate(
    R.id.firstFragment,
    null,
    NavOptions.Builder()
        .setPopUpTo(R.id.nav_graph, true) // очищает весь back stack
        .build()
)

Где:

  • R.id.firstFragment - ID целевого фрагмента
  • R.id.nav_graph - ID вашего графа навигации
  • true в setPopUpTo удаляет все фрагменты из стека, включая текущий

Альтернатива через FragmentManager:

supportFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)