我有一个附加到工具栏
的菜单
和两个MenuItems
。它们也可以被选中或取消选中。当我选择项目“0”时,项目“1”应变为未选中状态,反之亦然。但除了在 onOptionsItemSelected()
函数中选择的菜单项之外,我无法访问任何其他菜单项。有没有办法访问 onCreateOptionsMenu()
之外的菜单项(从 onCreate()
等)?
我尝试创建名为“items_type”的公共(public)Menu
变量,并在onCreateOptionsMenu()
内将现有的“菜单”分配给它。不起作用... items_type.findItem()
仍然在 onCreateOptionsMenu
之外给出 NullPointerException
。
public Menu items_type;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.items_type, menu);
this.items_type=menu;
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
items_type.findItem(R.id.<id_here>) // nullpointerexception error, that only works inside onCreateOptionsMenu and nowhere else. Any ideas?
}
最佳答案
你可以尝试这个方法:
private boolean isChecked = false;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem checkable = menu.findItem(R.id.menu_switch_full_original);
checkable.setChecked(isChecked);
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.a, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.menu_switch_full_original:
isChecked = !item.isChecked();
item.setChecked(isChecked);
// your other functionality
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
关于java - 如何从 onoptionsitemselected 访问所有菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57443131/