簡體   English   中英

在jetpack導航中處理backstack

[英]Handling backstack in jetpack navigation

我正在將BottomNavigationView與Jetpack Navigation 一起使用。 我還將所有 Fragment 設置為頂級目的地。

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在我使用TabLayout LibraryFoldersFragment對應的選項卡內LibraryFragment LibraryFoldersFragment包含一個RecyclerView 單擊RecyclerView項時, LibraryFilesFragment將替換LibraryFoldersFragment

val fragment = LibraryFilesFragment.newInstance(item)
                childFragmentManager.beginTransaction().addToBackStack(null).replace(R.id.frameLayout, fragment)
                    .commit()

這是我的應用程序的屏幕截圖

問題是在LibraryFilesFragment應用程序中按下后退按鈕會直接導航到第一個底部導航菜單項。 但我希望它導航到LibraryFoldersFragment

由於您使用的是 Jetpack 的 Navigation 組件,而不是自己提交片段事務。 創建一個導航 xml,用於將您的LibraryFoldersFragment聲明為LibraryFilesFragment導航。 在 recyclerView 項目上使用findNavController().navigate()點擊導航。 使用 NavController 設置 bottomNavView,並創建不同的所需導航 xml 的 GraphId。

樣品參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM