[英]Android Drawer with Navigation checks wrong menu item
但是,如果我单击同一项目或任何其他项目,它总是会切换到正确的导航片段,但抽屉菜单会将选择重置为第一个元素(第一个屏幕截图)。
这是我初始化抽屉和导航的方式:
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>
解决了。 问题在于 id 冲突。 当我有具有相同 ID 的片段时,我的导航 xml 具有 id="@+id/nav_group" 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.