如何从 onoptionsitemselected 访问所有菜单项
How to access all menu items from onoptionsitemselected
我有一个 Menu
附加到 Toolbar
和两个 MenuItems
。它们也可以选中或取消选中。当我 select 项目“0”时,项目“1”应该未选中,反之亦然。但是我无法访问任何其他菜单项,除了 select 在 onOptionsItemSelected()
函数中编辑的菜单项。有什么方法可以访问 onCreateOptionsMenu()
以外的菜单项(来自 onCreate()
等)?
我尝试创建名为 "items_type" 的 public Menu
变量,并在 onCreateOptionsMenu()
中将现有的 "menu" 分配给它。没用... 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?
}
public boolean onOptionsItemSelected (MenueItem item){
switch (item.getItemId()){
case R.id.item1:
//Do whatever you want to do when user clicks item1
break;
case R.id.item2:
//Do whatever you want to do when user clicks item2
break;
}
return true;
}
您可以使用 item.getItemId() 获取项目 ID,然后您可以执行任何您想做的事情。
你可以试试这个方法:
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);
}
我有一个 Menu
附加到 Toolbar
和两个 MenuItems
。它们也可以选中或取消选中。当我 select 项目“0”时,项目“1”应该未选中,反之亦然。但是我无法访问任何其他菜单项,除了 select 在 onOptionsItemSelected()
函数中编辑的菜单项。有什么方法可以访问 onCreateOptionsMenu()
以外的菜单项(来自 onCreate()
等)?
我尝试创建名为 "items_type" 的 public Menu
变量,并在 onCreateOptionsMenu()
中将现有的 "menu" 分配给它。没用... 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?
}
public boolean onOptionsItemSelected (MenueItem item){
switch (item.getItemId()){
case R.id.item1:
//Do whatever you want to do when user clicks item1
break;
case R.id.item2:
//Do whatever you want to do when user clicks item2
break;
}
return true;
}
您可以使用 item.getItemId() 获取项目 ID,然后您可以执行任何您想做的事情。
你可以试试这个方法:
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);
}