Android 在同一活动中单击按钮时创建新菜单选项菜单
我是android新手,最近我研究了选项菜单的文档,但我不了解其中的内容 onPrerpareOptionMenu 。在我的应用程序中,单击按钮时,我希望更改同一活动的选项菜单 谢谢Android 在同一活动中单击按钮时创建新菜单选项菜单,android,android-activity,Android,Android Activity,我是android新手,最近我研究了选项菜单的文档,但我不了解其中的内容 onPrerpareOptionMenu 。在我的应用程序中,单击按钮时,我希望更改同一活动的选项菜单 谢谢 public boolean onPrepareOptionsMenu(Menu menu){ return false; menu.clear(); //Clear view of previous menu MenuInflater inflater = getMenuInflate
public boolean onPrepareOptionsMenu(Menu menu){
return false;
menu.clear(); //Clear view of previous menu
MenuInflater inflater = getMenuInflater();
if( )//condition
inflater.inflate(R.menu.view_record, menu);
else
inflater.inflate(R.menu.add_record, menu);
return super.onPrepareOptionsMenu(menu);
}
我在我的几个相机应用程序中这样做,以根据通过滑动控制启用的相机功能来更改菜单,尽管按钮也可以工作,即用于拍摄图像或视频
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem someThing1 = menu.findItem(R.id.someThing1);
MenuItem someThing2 = menu.findItem(R.id.someThing2);
MenuItem someThing3 = menu.findItem(R.id.someThing3);
MenuItem someThing4 = menu.findItem(R.id.someThing4);
MenuItem someThing5 = menu.findItem(R.id.someThing5);
MenuItem help = menu.findItem(R.id.help);
MenuItem about = menu.findItem(R.id.about);
if (some_condition) { //could be button state or..?
someThing1.setTitle(R.string.someThing1a);
someThing2.setTitle(R.string.someThing2a);
someThing3.setTitle(R.string.someThing3a);
someThing4.setVisible(false);
someThing5.setVisible(false);
help.setVisible(false);
about.setVisible(false);
} else {
someThing1.setTitle(R.string.someThing1b);
someThing2.setTitle(R.string.someThing2b);
someThing3.setTitle(R.string.someThing3b);
someThing4.setVisible(true);
someThing5.setVisible(true);
help.setVisible(true);
about.setVisible(true);
}
return true; // this is important to call so that new menu is shown
}
我使用了ischangedstate,但它没有显示。请尝试使用OnCreateOptions菜单菜单,而不是OnPrepareOptions菜单菜单。CreateOptions菜单只调用一次,然后它将如何在按钮上重新加载选项菜单单击检查此链接,感谢您提供的解决方案。请解释一下InvalidateOptions菜单的使用原因和方式好吗?再次感谢API:API级别11中添加的public void InvalidateOptions菜单声明选项菜单已更改,因此应重新创建。下次需要显示OnCreateOptions菜单方法时,将调用该方法。对于