Как предотвратить навигацию при использовании Android Jetpack Navigation

Я хочу проверить фактический фрагмент, если он грязный, и предупредить пользователя, чтобы он потерял свои изменения. Я не мог найти слушателя на Navcontroller для взаимодействия до того, как произойдет навигация.

Я уже пытался установить прослушиватель для BottomNavigationView, но в результате после сброса навигация перестала работать.

requireActivity().bottomNavigationView.setOnNavigationItemSelectedListener{menuItem ->
            DialogUtil.showBeforeLeaveDetailFragmentDialog(context!!){
                requireActivity().bottomNavigationView.setOnNavigationItemSelectedListener(null)
                findNavController().navigate(menuItem.itemId)
            }
            false
        }

Есть ли какой-нибудь глобальный слушатель, который я могу использовать, или другое чистое решение?


person Bambl    schedule 15.04.2019    source источник


Ответы (1)


Это должно сработать.

requireActivity().bottomNavigationView.setOnNavigationItemSelectedListener{menuItem ->
            DialogUtil.showBeforeLeaveDetailFragmentDialog(context!!){
                return NavigationUI.onNavDestinationSelected(it, navController)
            }
            false
        }

И я не знаю, почему вы убираете NavigationItemSelectedListener. Объясните, зачем вы это делаете.

person SanthoshKumar SrikanthaMurali    schedule 22.04.2019