作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很好奇如何使用 Android Jetpack 的导航图从抽屉布局中的菜单项导航到嵌套导航图。我知道幕后有一些魔术将菜单项与基于 Id 的 fragment 链接,但我不知道如何将菜单项链接到嵌套导航图。
例如,我使用的是 Android Studio 附带的默认 Navigation Drawer Activity 项目。我已将 mobile_navigation.xml 修改为以下内容:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/nav_home">
<fragment
android:id="@+id/nav_home"
android:name="com.example.testdrawer.ui.home.HomeFragment"
android:label="@string/menu_home"
tools:layout="@layout/fragment_home" />
<include app:graph="@navigation/nested_navigation" />
<fragment
android:id="@+id/nav_tools"
android:name="com.example.testdrawer.ui.tools.ToolsFragment"
android:label="@string/menu_tools"
tools:layout="@layout/fragment_tools" />
<fragment
android:id="@+id/nav_share"
android:name="com.example.testdrawer.ui.share.ShareFragment"
android:label="@string/menu_share"
tools:layout="@layout/fragment_share" />
<fragment
android:id="@+id/nav_send"
android:name="com.example.testdrawer.ui.send.SendFragment"
android:label="@string/menu_send"
tools:layout="@layout/fragment_send" />
</navigation>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nested_navigation"
app:startDestination="@+id/nav_gallery">
<fragment
android:id="@+id/nav_gallery"
android:name="com.example.testdrawer.ui.gallery.GalleryFragment"
android:label="@string/menu_gallery"
tools:layout="@layout/fragment_gallery" />
<fragment
android:id="@+id/nav_slideshow"
android:name="com.example.testdrawer.ui.slideshow.SlideshowFragment"
android:label="@string/menu_slideshow"
tools:layout="@layout/fragment_slideshow" />
</navigation>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_menu_camera"
android:title="@string/menu_home" />
<item
android:id="@+id/nested_navigation"
android:icon="@drawable/ic_menu_gallery"
android:title="Photos Graph" />
<item
android:id="@+id/nav_tools"
android:icon="@drawable/ic_menu_manage"
android:title="@string/menu_tools" />
</group>
<item android:title="Communicate">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
android:title="@string/menu_share" />
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
android:title="@string/menu_send" />
</menu>
</item>
</menu>
override fun onNavigationItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.nested_navigation -> {
findNavController(R.id.nav_host_fragment).navigate(R.id.action_nested_navigation)
}
}
drawer_layout.closeDrawer(GravityCompat.START)
return true
}
最佳答案
实际上,我以一种非常标准的方式工作。您的 XML 文件看起来不错,但您是否还在 AppBarConfiguration 中的 topLevelDestinationIds 中包含了 R.id.nested_navigation?
val navController = findNavController(R.id.nav_host_fragment)
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_home,
R.id.nav_tools,
R.id.nav_share,
R.id.nav_send.
R.id.nested_navigation
),
drawerLayout
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
如果这不能解决您的问题,请分享您的代码以设置导航 View 。
关于Android Jetpack Navigation - 如何从抽屉菜单项导航到嵌套导航图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60843557/
我有三个 Controller 。让我们依次说 Controller A、B 和 C。 Controller A 中的导航标题颜色为红色。 Controller B 为蓝色, Controller C
我有一个导航图,它使用此 fragment 作为主 Activity XML 中的主页。 我有一个带有菜单的抽屉布局,当我单击抽屉导航按钮时,我无法使导航正常工作(它在主 fragm
我是一名优秀的程序员,十分优秀!