Android 在同一活动中单击按钮时创建新菜单选项菜单

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

我是android新手,最近我研究了选项菜单的文档,但我不了解其中的内容 onPrerpareOptionMenu 。在我的应用程序中,单击按钮时,我希望更改同一活动的选项菜单

谢谢

  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菜单方法时,将调用该方法。对于