如何正确使用?我的意思是,我需要检查当前视图是什么,更改菜单选项取决于当前视图?有什么想法吗?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if(getWindow().equals(R.id.additional_content)) {
getMenuInflater().inflate(R.menu.test2, menu);
} else {
getMenuInflater().inflate(R.menu.test1, menu);
}
return super.onCreateOptionsMenu(menu);
}
答案 0 :(得分:0)
添加了invalidateOptionsMenu(),使我们能够强制再次调用onCreateOptionsMenu()。每次调用菜单时仍会调用onPrepareOptionsMenu()。
您在上面尝试实现的是何时使用invalidateOptionsMenu()的一个很好的示例,但由于向后兼容性,您需要同时执行这两项操作:
if (Build.VERSION.SDK_INT >= 11) {
invalidateOptionsMenu();
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
if (Build.VERSION.SDK_INT >= 11) {
selectMenu(menu);
}
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (Build.VERSION.SDK_INT < 11) {
selectMenu(menu);
}
return true;
}
private void selectMenu(Menu menu) {
menu.clear();
MenuInflater inflater = getMenuInflater();
if (locked) {
inflater.inflate(R.menu.changing_menu2, menu);
}
else {
inflater.inflate(R.menu.changing_menu1, menu);
}
}