我创建了一个小示例应用程序来测试 android 导航库。一般的想法是我想要两个带有自己的导航图的选项卡。
我的主要 Activity 布局包含一个 BottomNavigationView
和两个 NavHost
。
ButtonNavigationView
点击监听器负责显示一个 NavHost
或另一个,并使用选定的 Controller 调用 NavigationUI.setupActionBarWithNavController
以更新相应的工具栏。向上导航工作正常。
我现在面临的问题是后退按钮。
有一个属性 app:defaultNavHost="true"
确保你的 NavHostFragment
拦截系统后退按钮,但我希望它根据 Activity 图。我找不到改变它的方法:(
我知道我可以重写 onBackPressed()
但我正在尝试为库找到一种方法来为我完成这项工作,让它知道哪个图是 Activity 的。
最佳答案
根据 NavHostFragment source , app:defaultNavHost="true"
所做的就是调用 setPrimaryNavigationFragment() ,这就是 FragmentManager 知道将按钮事件发送回哪个子 Fragment 的方式。
因此,当切换到新的 Fragment 时,您可以将 setPrimaryNavigationFragment()
添加到您的 FragmentTransaction 以获得相同的行为。
关于android - 使用带有两个导航图的 Android Navigation 处理后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244463/