Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android弹出菜单可检查项不检查_Android_Checkbox_Popupmenu - Fatal编程技术网

Android弹出菜单可检查项不检查

Android弹出菜单可检查项不检查,android,checkbox,popupmenu,Android,Checkbox,Popupmenu,我有一个简单的弹出菜单,但当我点击一个项目时,该项目不会被选中。为什么? 文件中包括: 图标菜单(从选项菜单)中的菜单项不能显示复选框或单选按钮。 单选按钮正在显示,但只有状态未更改 爪哇 XML文件 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/so

我有一个简单的弹出菜单,但当我点击一个项目时,该项目不会被选中。为什么?

文件中包括: 图标菜单(从选项菜单)中的菜单项不能显示复选框或单选按钮。 单选按钮正在显示,但只有状态未更改

爪哇

XML文件

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:id="@+id/sort_def"
      android:title="@string/action_sort_def"
      android:orderInCategory="1"
      android:showAsAction="always" />

<item android:id="@+id/sort_asc"
      android:title="@string/action_sort_name"
      android:orderInCategory="2"
      android:showAsAction="always" />

<item
      android:id="@+id/sort_desc"
      android:title="@string/action_sort_name_desc"
      android:orderInCategory="3"
      android:showAsAction="always"/>
</group>

屏风


**在任何情况下都要交换这些行**

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

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

首先,可以将if checked else语句简化为

item.setChecked(!item.isChecked())
这样,它将始终从“真”切换→ 错误,反之亦然

但问题在于您有单选按钮,上面的语句所做的是检查
,但您想要的是检查

要获得所需的行为,可以使用
item.getSubmMenu()
,然后对所需的特定子菜单项使用setChecked方法

例如:

//This will refer to the default, ascending or descending item.
MenuItem subMenuItem = item.getSubMenu().getItem(INDEX_OF_ITEM); 
//Check or uncheck it.
subMenuItem.setChecked(!subMenuItem.isChecked());
//This will refer to the default, ascending or descending item.
MenuItem subMenuItem = item.getSubMenu().getItem(INDEX_OF_ITEM); 
//Check or uncheck it.
subMenuItem.setChecked(!subMenuItem.isChecked());