在Jetpack导航中处理后堆栈

时间:2020-10-19 05:22:56

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

我在Jetpack Navigation中使用BottomNavigationView。我还将所有片段都设置为顶级目的地。

val host : NavHostFragment = supportFragmentManager
            .findFragmentById(R.id.nav_host_fragment) as NavHostFragment? ?: return
        val navController = host.navController
        val appBarConfig = AppBarConfiguration(topLevelDestinationIds = setOf(R.id.library_fragment,R.id.account_fragment,R.id.calender_fragment,R.id.home_fragment,R.id.notice_fragment))
        val bottomNavView = binding.bottomNavView

        setSupportActionBar(binding.toolbar)
        setupActionBarWithNavController(navController,appBarConfig)
        bottomNavView.setupWithNavController(navController)

在第二个底部导航菜单项上,我正在使用LibraryFragment的{​​{1}}。 TabLayout中有一个LibraryFoldersFragment对应于一个Tab。 LibraryFragment包含一个LibraryFoldersFragment。点击RecyclerView项后,RecyclerView将替换LibraryFilesFragment

LibraryFoldersFragment

Here is the Screenshot of my app

问题在于,在val fragment = LibraryFilesFragment.newInstance(item) childFragmentManager.beginTransaction().addToBackStack(null).replace(R.id.frameLayout, fragment) .commit() 应用中按返回按钮时,直接导航到第一个底部导航菜单项。但我希望它导航到LibraryFilesFragment

1 个答案:

答案 0 :(得分:0)

由于您使用的是Jetpack的Navigation组件,而不是自己提交碎片事务。创建一个导航XML,以声明您的LibraryFoldersFragmentLibraryFilesFragment导航。在recyclerView项目单击上使用findNavController().navigate()进行导航。 设置带有NavController的bottomNavView,并创建具有不同所需导航XML的GraphId。

Sample reference