Как запретить навигацию при использовании 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, Объясните, почему вы это делаете.

Другие вопросы по тегам