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