繁体   English   中英

单击项目时,使ActionBar上的菜单保持打开状态

[英]Make menu on ActionBar stay open when I click on an item

我具有针对食谱的搜索功能,并且希望包含针对不同过敏或饮食的搜索过滤器。 我已经将此作为选项包含在页面的操作栏中。 但是,每当我单击复选框时,菜单都会消失,并且我必须再次单击橙色图标以弹出菜单,然后单击另一个选项。 有没有一种方法可以使菜单保持打开状态,以便我可以在不每次关闭菜单的情况下检查多个过滤器?

这是我的过滤器部分的图片。

在此处输入图片说明

checkable_test.xml

<item android:id="@+id/action"
    android:title="@string/action_example"
    android:icon="@drawable/filter"
    app:showAsAction="withText|ifRoom">

<menu>

<item android:title="Allergies">
    <menu>

        <group android:id="@+id/allergies"
            android:checkableBehavior="all">

            <item android:id="@+id/no_peanut"
                android:icon="@drawable/no_peanut"
                android:title="No Peanuts"
                android:checkable="true"/>
            <item android:id="@+id/no_sesame"
                android:icon="@drawable/no_sesame"
                android:title="No Sesame"
                android:checkable="true"/>
            <item android:id="@+id/no_dairy"
                android:title="No Dairy"
                android:icon="@drawable/no_milk"
                android:checkable="true"/>
            <item android:id="@+id/gluten_free"
                android:icon="@drawable/gluten_free"
                android:title="No Gluten"
                android:checkable="true"/>
            <item android:id="@+id/no_egg"
                android:icon="@drawable/no_eggs"
                android:title="No Egg"
                android:checkable="true"/>
            <item android:id="@+id/no_soy"
                android:icon="@drawable/no_soy"
                android:title="No Soy"
                android:checkable="true"/>
            <item android:id="@+id/no_seafood"
                android:icon="@drawable/no_crust"
                android:title="No Seafood"
                android:checkable="true"/>
        </group>
    </menu>
</item>

Search.java

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        menu.clear();
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.checkable_test, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.no_peanut:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.no_dairy:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.no_egg:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.no_seafood:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.no_sesame:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.no_soy:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            case R.id.gluten_free:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

有什么解决办法吗?

您可以尝试更改所有

return true;

进入

return false;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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