Как запретить навигацию при использовании Android Jetpack Navigation
Я хочу проверить фактический фрагмент, если он грязный, и предупредить пользователя, чтобы он потерял свои изменения. Я не смог найти Слушатель на Navcontroller для взаимодействия до того, как произойдет навигация.
Я уже пытался настроить прослушиватель на BottomNavigationView, но в результате навигация больше не работала после сброса.
requireActivity().bottomNavigationView.setOnNavigationItemSelectedListener{menuItem ->
DialogUtil.showBeforeLeaveDetailFragmentDialog(context!!){
requireActivity().bottomNavigationView.setOnNavigationItemSelectedListener(null)
findNavController().navigate(menuItem.itemId)
}
false
}
Есть ли глобальный слушатель, который я могу использовать или другое чистое решение?
1 ответ
Это должно работать.
requireActivity().bottomNavigationView.setOnNavigationItemSelectedListener{menuItem ->
DialogUtil.showBeforeLeaveDetailFragmentDialog(context!!){
return NavigationUI.onNavDestinationSelected(it, navController)
}
false
}
И я не знаю, почему вы очищаете NavigationItemSelectedListener
, Объясните, почему вы это делаете.