繁体   English   中英

在 DrawerLayout 中使用 Navigation 导航片段的正确方法

[英]Proper way to navigate fragments with Navigation within DrawerLayout

我对喷气背包组件有点陌生..我正在研究导航器并撞到了墙.. 必须有一种优雅的方式来处理抽屉布局内导航器中所有可能场景中的移动,但我无法找到它..指南“https://developer.android.com/guide/navigation/navigation-ui#kotlin”不起作用,因为“抽屉图标显示在所有使用 DrawerLayout 的顶级目的地”是错误的,所以我不得不添加手动工具栏,因此其他链接“https://developer.android.com/guide/navigation/navigation-ui#Tie-navdrawer”也不起作用。

我有一个有 4 个项目的抽屉布局..(来自菜单文件)

我得到了导航控制器:

val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as 
NavHostFragment

val navController = navHostFragment.navController

从抽屉布局我可以 go 从 homeFragment->A 或 B 或 C 使用 navController.navigate(...) 但是一旦我导航到另一个片段,我需要另一个动作来处理我想从片段 A->B 导航的情况

所以我的简化解决方案是:

navigationView.setNavigationItemSelectedListener { menuItem ->
val currentFragment = navHostFragment.childFragmentManager.fragments[0]

if (currentFragment is HomeFragment ){
            when (menuItem.itemId) {
                R.id.myProfile -> {
                    navController.navigate(...)
                }
                R.id.people -> {
                    navController.navigate(...)
                }
                ...// other options
            }
        } 
 if (currentFragment is A_Fragment ){
            when (menuItem.itemId) {
                R.id.myProfile -> {
                    navController.navigate(...)
                }
                ....//all other options
            }
        } 

如您所见,这可行..但我想必须有更好的方法在抽屉布局中进行导航..对吗?

顺便说一句,我看到了该指南,但它不起作用,但问题可能出在此处:“抽屉图标显示在所有使用 DrawerLayout 的顶级目的地”这是错误的。 我只是将布局复制粘贴到 main_activity.xml 布局中,它没有显示任何内容,我认为可能是我使用的依赖项不正确。

implementation 'androidx.navigation:navigation-fragment-ktx:2.3.4'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.4'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM