使用Android Jetpack导航时如何防止导航

时间:2019-04-15 18:20:24

标签: android kotlin android-jetpack android-jetpack-navigation

我想检查实际的片段是否脏了,并警告用户丢失所做的更改。在导航发生之前,我在Navcontroller上找不到侦听器进行交互。

我已经尝试将BottomNavigationView设置为侦听器,但结果是重置后导航不再起作用。

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

我可以使用任何全局侦听器或其他干净的解决方案吗?

1 个答案:

答案 0 :(得分:0)

这应该有效。

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

我不知道您为什么要清除NavigationItemSelectedListener。解释为什么要这么做。