【问题标题】:Navigation drawer does not retain selected item导航抽屉不保留所选项目
【发布时间】:2016-04-07 16:35:34
【问题描述】:

当我单击属于不同组(特殊)的项目时,在 NavigationDrawer 中保留所选项目时遇到问题。

    ...
    <item
        android:id="@+id/item_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/drawer_notification"
        android:visible="true" />
</group>
<group android:id="@+id/special">
    <item
        android:id="@+id/item_settings"
        android:icon="@drawable/ic_settings_48dp"
        android:title="@string/drawer_settings" />
    <item
        android:id="@+id/item_feedback"
        android:icon="@drawable/ic_chat_bubble_black_24dp"
        android:title="@string/drawer_feedback" />

    <item
        android:id="@+id/item_logout"
        android:icon="@drawable/ic_arrow_back_black_24dp"
        android:title="@string/drawer_logout" />

</group>

这是我的 MainActivity 中的开关盒:

@Override public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);

switch (menuItem.getItemId()) {
case R.id.item_notifications:
    mCurrentSelectedPosition = 6;
    getSupportFragmentManager().beginTransaction()
        .replace(R.id.container, BaseFragment.newInstance("Notifications"))
        .commit();
    mDrawerLayout.closeDrawers();
    return true;

  case R.id.item_settings:
    mCurrentSelectedPosition = 7;
    mDrawerLayout.closeDrawers();
    Snackbar.make(findViewById(R.id.container), "Settings", Snackbar.LENGTH_SHORT).show();
    return true;

  case R.id.item_feedback:
    mCurrentSelectedPosition = 8;
    mDrawerLayout.closeDrawers();
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.container, FeedbackFragment.getInstance())
            .commit();
    return true;

  case R.id.item_logout:
    mDrawerLayout.closeDrawers();
    session.logoutUser(MainActivity.this);
    return true;
  }
}

我没有发现我的代码有任何问题。只是当我单击抽屉中的另一个组时,navigationDrawer 不会保留我选择的项目。

【问题讨论】:

  • 在组标签中尝试 android:checkableBehavior="single"。
  • 哦,我明白了。谢谢@Harry,它成功了。
  • 哦,问题是抽屉里有两个不同组的选定项目是错误的,对吧?必须只有一个。
  • 我已将其作为答案发布,如果您愿意,可以接受:)

标签: android navigation-drawer


【解决方案1】:

您需要在菜单组中添加这一行:

android:checkableBehavior="single"

这将帮助您保留选定的状态。

<group android:id="@+id/special" 
       android:checkableBehavior="single">
    <item
        android:id="@+id/item_settings"
        android:icon="@drawable/ic_settings_48dp"
        android:title="@string/drawer_settings" />
    <item
        android:id="@+id/item_feedback"
        android:icon="@drawable/ic_chat_bubble_black_24dp"
        android:title="@string/drawer_feedback" />

    <item
        android:id="@+id/item_logout"
        android:icon="@drawable/ic_arrow_back_black_24dp"
        android:title="@string/drawer_logout" />

</group>

查看此official blog post 以获取更多参考...

希望它会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多