簡體   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