【发布时间】:2020-06-25 18:23:54
【问题描述】:
我有一个这样的菜单资源文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>
<group android:checkableBehavior="single">
<item android:id="@+id/sort_all"
android:title="All"
android:orderInCategory="1" />
<item android:id="@+id/sort_co"
android:title="CoAuthors"
android:orderInCategory="2" />
<item
android:id="@+id/sort_title"
android:title="Title"
android:orderInCategory="3" />
<item
android:id="@+id/sort_journal"
android:title="Journals"
android:orderInCategory="4" />
<item
android:id="@+id/sort_year"
android:title="Year"
android:orderInCategory="5" />
</group>
</menu>
我在弹出菜单上使用它:
final PopupMenu popup = new PopupMenu(MainActivity.this, btn1);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.search_menu, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.sort_co:
popup.getMenu().findItem(item.getItemId()).setChecked(true);
return true;
case R.id.sort_title:
item.setChecked(true);
return true;
case R.id.sort_journal:
item.setChecked(true);
return true;
case R.id.sort_year:
item.setChecked(true);
return true;
case R.id.sort_all:
item.setChecked(true);
return true;
default:
return true;
}
}
});
popup.show();
}
});
如你所见,我尝试过使用
item.setChecked(true) 和
popup.getMenu().findItem(item.getItemId()).setChecked(true);
但问题是当我在关闭菜单之前单击项目时,项目会被选中,但是当我再次重新打开菜单时,它不会被选中! 我也尝试过使用
MenuItem subMenuItem = item.getSubMenu().getItem(INDEX_OF_ITEM);
subMenuItem.setChecked(!subMenuItem.isChecked());
但它给了我 NullPointerException... .
【问题讨论】:
-
NullPointerException 通常意味着您正在尝试引用未初始化的对象。
-
@Danieboy Dude,我知道 NullPointerException 是什么,我正在寻求答案,对于整个弹出菜单的事情......
标签: java android checkbox menu popupmenu