简而言之,这是我的问题:
可以在 android 3.0+ 上以编程方式修改选项菜单(显示在操作栏中)吗?
我有一个向导式活动,我使用 ViewFlipper 在视图或步骤之间切换。
步骤是:1(无)-> 2(菜单)-> 3(无)。
只有第二个屏幕 (2) 有菜单项,而其他屏幕没有,所以我需要在显示活动时隐藏/删除菜单,然后在操作后显示/添加。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.mMenu = menu;
getMenuInflater().inflate(R.menu.my_menu, menu);
mMenu.getItem(0).setVisible(false);
return super.onCreateOptionsMenu(menu);
}
切换到第二个屏幕 ->
public void showNext(View v) {
if (mVFlipper.getDisplayedChild() < (mVFlipper.getChildCount() - 1)) {
mVFlipper.showNext();
if (mVFlipper.getDisplayedChild() == 1) {
setTitle("Second screen");
mMenu.getItem(0).setVisible(true);
}
}
}
这在 2.2 上运行良好,但在 4.1 上失败了。从可见的 MenuItem 开始,隐藏它并稍后显示它。从一个不可见的菜单项开始并稍后显示它是行不通的。
我的主要问题似乎是在 onCreateOptionsMenu 完成执行后 MenuItem 是不可见的。对于此方法,我可以让 MenuItem 保持可见,但我没有其他可用的回调来隐藏它。