繁体   English   中英

Android 带导航的抽屉检查错误的菜单项

[英]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.

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