如何在运行时更改 android 2.3.3 中的选项菜单?我有两个 xml 菜单,需要在运行时切换菜单类型。
我想销毁或更新菜单,然后当用户按下菜单按钮时,会再次调用 onCreateOptions 菜单,选择适当的 xml 菜单。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if(OPTIONS_TYPE == 0) // Photo option
getMenuInflater().inflate(R.menu.photomenu, menu);
else // Photo + delete option
getMenuInflater().inflate(R.menu.photodeletemenu, menu);
return super.onCreateOptionsMenu(menu);
}
最佳答案
onCreateOptionsMenu 只被调用一次。可能有一个 hack 可以让你删除一个选项菜单,但是在调用之后修改它的标准方法如下来自 android 文档,请注意它说“必须”
在运行时更改菜单项
创建 Activity 后,仅调用一次 onCreateOptionsMenu() 方法,如上所述。系统会保留并重复使用您在此方法中定义的菜单,直到您的 Activity 被销毁。如果您想在第一次创建选项菜单后随时更改它,您必须覆盖 onPrepareOptionsMenu() 方法。
文档位于 Creating Menus
现在说你可以这样做,只是不确定它是否被支持。这只是我自己的测试代码,我每次都会交换菜单,您需要添加自己的逻辑
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
menu.clear();
if (OPTIONS_TYPE == 0) {
OPTIONS_TYPE = 1;
getMenuInflater().inflate(R.menu.secondmenu, menu);
}
else { // Photo + delete option {
OPTIONS_TYPE = 0;
getMenuInflater().inflate(R.menu.firstmenu, menu);
}
return super.onPrepareOptionsMenu(menu);
}
关于java - 在运行时更改菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791966/