Как запретить навигацию при использовании Android Jetpack Navigation - PullRequest
0 голосов
/ 15 апреля 2019

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

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

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

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

1 Ответ

0 голосов
/ 22 апреля 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...