【发布时间】:2019-08-09 18:23:42
【问题描述】:
我想为我的菜单条目添加onMenuItemClickListener。问题是当我尝试在onCreateOptionsMenu() 之外访问menu.findItem(R.id.*) 时,我总是得到NullPointerException。由于某种原因,菜单项仍然无法用于任何其他功能,我不知道,为什么...
public Menu items_type;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.items_type, menu);
items_type=menu;
return true;
}
public boolean onPrepareOptionsMenu(Menu menu) {
items_type.clear();
MenuItem.OnMenuItemClickListener common = new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
if(items_type.findItem(R.id.filename).isChecked() && menuItem.getItemId()==R.id.tracktitle)
{
items_type.findItem(R.id.tracktitle).setChecked(true);
items_type.findItem(R.id.filename).setChecked(false);
}
else if(items_type.findItem(R.id.tracktitle).isChecked() && menuItem.getItemId()==R.id.filename)
{
items_type.findItem(R.id.filename).setChecked(true);
items_type.findItem(R.id.tracktitle).setChecked(false);
}
return true;
}
};
items_type.findItem(R.id.tracktitle).setOnMenuItemClickListener(common);
items_type.findItem(R.id.filename).setOnMenuItemClickListener(common);
return true;
}
public void onCreate(Bundle savedInstanceState) {
...
}
/res/menu/items_type.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@id/group"
android:checkableBehavior="single">
<item
android:id="@id/filename"
android:title=" File Names"
app:showAsAction="never"/>
<item
android:id="@id/tracktitle"
android:title="ID3 Titles"
app:showAsAction="never"/>
</group>
</menu>
【问题讨论】:
标签: java android nullpointerexception menu menuitem