android 从选项菜单中从子片段移动到其他子片段

bcs8qyzn  于 2023-06-04  发布在  Android
关注(0)|答案(1)|浏览(363)

Hi有一个导航组件,有4个目的地,我在一个选项菜单中添加了目的地。
它工作得很完美,但现在我需要从一个选定的片段移动到另一个片段,但我没有找到任何解决方案,因为我可以打开我选定的片段,但我不能重新打开第一个片段。
这是MainActivity中的nav控制器配置:

val navView: NavigationView = binding.navView
navController = findNavController(R.id.nav_host_fragment)
appBarConfiguration = AppBarConfiguration(
    setOf(
        R.id.nav_home,
        R.id.nav_two,
        R.id.nav_three,
        R.id.nav_four
    ), drawerLayout
)

navController?.let {
    setupActionBarWithNavController(it, appBarConfiguration)
    navView.setupWithNavController(it)
}

这是第二个片段中的(错误的)调用,以编程方式转到第四个片段:

requireActivity().findNavController(R.id.nav_host_fragment).navigate(R.id.nav_four)

就像我说的,我正确地进入第四个片段,但导航不正确,因为在那之后,它是不可能选择主片段选择侧菜单。
有什么办法吗?

jhdbpxl9

jhdbpxl91#

假设你有一个my_navigation.xml文件,你分别添加了4个片段fragment_1、fragment_2、fragment_3和fragment_4。您应该在每个片段之间添加路径。

  • 从片段_1到片段_2、片段_3、片段_4
  • 从片段_2到片段_1、片段_3、片段_4
  • 从片段_3到片段_1、片段_2、片段_4
  • 从片段_4到片段_1、片段_2、片段_3

因此,您可以使用actionID从任何片段导航到任何片段。
ref: https://medium.com/swlh/android-navigation-component-part-1-6191323eaf39
从任何一个片段,你可以像这样导航到另一个片段:

findNavController().navigate(R.id.yourActionID_that_your_write_in_myNavigation_xml_file)

我可能误解了这个问题,如果是,请更新我。祝你好运!

相关问题