Ответ
Для очистки 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)