【发布时间】:2020-07-03 15:01:38
【问题描述】:
但如果我点击同一个项目或任何其他项目,它总是会切换到正确的导航片段,但抽屉菜单会将选择重置为第一个元素(第一个屏幕截图)。
这是我初始化抽屉和导航的方式:
setContentView(R.layout.activity_main)
setSupportActionBar(root.toolbar)
val nav_controller = findNavController(R.id.navigation)
appbarCfg = AppBarConfiguration(setOf(
R.id.nav_group,
R.id.nav_help,
R.id.nav_video,
R.id.nav_settings
), root)
setupActionBarWithNavController(nav_controller, appbarCfg)
root.setStatusBarBackgroundColor(getColor(R.color.lblue))
root.drawer.setupWithNavController(nav_controller)
导航xml:
<?xml version="1.0" encoding="utf-8"?>
<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/nav_group" <!-- issue was here. -->
app:startDestination="@id/nav_group"
>
<!-- group. -->
<fragment
android:id="@+id/nav_group"
android:name="***.model.fragment.GroupFragment"
android:label="@string/drawer_navigation_home"
tools:layout="@layout/fragment_group"
>
</fragment>
<!-- help. -->
<fragment
android:id="@+id/nav_help"
android:name="***.model.fragment.HelpFragment"
android:label="@string/drawer_navigation_help"
tools:layout="@layout/fragment_help"
>
</fragment>
<!-- video. -->
<fragment
android:id="@+id/nav_video"
android:name="***.model.fragment.VideoFragment"
android:label="@string/drawer_navigation_video"
tools:layout="@layout/fragment_video"
>
</fragment>
<!-- settings. -->
<fragment
android:id="@+id/nav_settings"
android:name="***.model.fragment.SettingsFragment"
android:label="@string/drawer_navigation_settings"
tools:layout="@layout/fragment_settings"
>
</fragment>
</navigation>
抽屉菜单:
<?xml version="1.0" encoding="utf-8"?>
<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_group"
android:icon="@drawable/ic_home"
android:title="@string/drawer_navigation_home"
/>
<item
android:id="@+id/nav_help"
android:icon="@drawable/ic_eye"
android:title="@string/drawer_navigation_help"
/>
<item
android:id="@+id/nav_video"
android:icon="@drawable/ic_camera"
android:title="@string/drawer_navigation_video"
/>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_gear"
android:title="@string/drawer_navigation_settings"
/>
</group>
</menu>
【问题讨论】:
-
使用
appbarCfg = AppBarConfiguration(......, drawerLayout) -
@GabrieleMariotti root 是 Kotlin 为我的 DrawerLayout 合成的。
-
哎呀,对不起!
标签: android navigation-drawer android-architecture-navigation