我能';无法在Android导航抽屉中选择显示多个项目

我能';无法在Android导航抽屉中选择显示多个项目,android,Android,我正在为本地公交系统构建一个Android应用程序,并尝试使用导航抽屉作为地图上显示的路线的过滤器。功能就在那里,但我正在努力使用UI。每当我单击一个项目时,其他所有内容都设置为未选中,这不是我想要的。我一直在试图找到解决这个问题的办法,但没有想出任何办法。以下是导航抽屉的代码: 主要活动: mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); Toolbar toolbar = (Toolbar) findVi

我正在为本地公交系统构建一个Android应用程序,并尝试使用导航抽屉作为地图上显示的路线的过滤器。功能就在那里,但我正在努力使用UI。每当我单击一个项目时,其他所有内容都设置为未选中,这不是我想要的。我一直在试图找到解决这个问题的办法,但没有想出任何办法。以下是导航抽屉的代码:

主要活动:

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // listen for navigation events
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);



    // set up the hamburger icon to open and close the drawer
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.navigation_drawer_open,
            R.string.navigation_drawer_close);
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerToggle.syncState();


@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
    final boolean enable;
    //update highlighted item in the navigation menu

    //menuItem.setChecked(!menuItem.isChecked());
    if(menuItem.isChecked()){
        menuItem.setChecked(false);
        enable = false;
    }
    else{
        menuItem.setChecked(true);
        enable=true;
    }

    //menuItem.setChecked(true);
    mNavItemId = menuItem.getItemId();

    // allow some time after closing the drawer before performing real navigation
    // so the user can see what is happening
    // mDrawerLayout.closeDrawer(GravityCompat.START);
    mDrawerActionHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            navigate(menuItem.getItemId(),enable);
        }
    }, DRAWER_CLOSE_DELAY_MS);
    return true;
}
和布局文件:

<item
    android:id="@+id/filter_routes"
    android:title="@string/filter">
    <menu>
        <group android:checkableBehavior="all">
        <item
            android:id="@+id/red_route"
            android:title="@string/red_route"
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
            android:icon="@drawable/abc_btn_check_material"
            android:checked="true"
            android:checkable="true"/>
        <item
            android:id="@+id/blue_route"
            android:title="@string/blue_route"
            android:icon="@drawable/abc_btn_check_material"
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
            android:checked="true"
            android:checkable="true"/>
        <item
            android:id="@+id/green_route"
            android:title="@string/green_route"
            android:icon="@drawable/abc_btn_check_material"
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
            android:checked="true"
            android:checkable="true"/>
        <item
            android:id="@+id/orange_route"
            android:title="@string/orange_route"
            android:icon="@drawable/abc_btn_check_material"
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
            android:checked="true"
            android:checkable="true"/>
        <item
            android:id="@+id/brown_route"
            android:title="@string/brown_route"
            android:icon="@drawable/abc_btn_check_material"
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
            android:checked="true"
            android:checkable="true"/>
        </group>
    </menu>
</item>

通过从onNavigationItemSelected()返回false,我获得了多个工作选项。从Google文档中获取onNavigationItemSelected()的返回值:

布尔值为true,将项目显示为选定项目

显然,这意味着返回false会将项选择留在控件中

这里有一个例子

XML:


我提交了关于这件事的报告,并按计划关闭了它。谷歌显然让
NavigationView
使用菜单XML,但无意让它像菜单一样工作。

你解决了这个问题吗?我也有同样的问题,几乎所有的搜索结果都是如何单个检查项目。我放弃了这个,实现了一个弹出对话框的解决方案。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="All">
        <menu>
            <group
                android:checkableBehavior="all"
                android:id="@+id/checkable_group"
                >
                <item
                    android:id="@+id/checkable_item_1"
                    android:title="A" />
                <item
                android:id="@+id/checkable_item_2"
                android:title="B" />
            <item
                android:id="@+id/checkable_item_3"
                android:title="C" />
            <item
                android:id="@+id/checkable_item_4"
                android:title="D" />
        </group>
    </menu>
    </item>
</menu>
   @Override
   public boolean onNavigationItemSelected(MenuItem item) {

        if (item.isChecked()) {
            item.setChecked(false);
        }
        else {
            item.setChecked(true);
        }

        return false;       // VERY Important to return false here
    }