2010-09-09 88 views
8

的问题是,下面的方法被调用一次当按下菜单按钮:如何制作动态选项菜单?

public boolean onCreateOptionsMenu(Menu menu) 

我怎样才能重新在以后的时间菜单,以改变一些选项,禁用一些选项等?

回答

22

覆盖此 onPrepareOptionsMenu(菜单菜单)

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

     MenuItem item = menu.findItem(R.id.refresh); 

     if (item != null) { 
     item.setVisible (shouldIShowThisItem) 
     } 
} 
+0

这很好。对于这样做的任何人,在更改onPrepareOptionsMenu中的菜单项之前,您需要执行menu.clear()来清除当前的内容。 – pcm2a 2010-09-09 22:28:45

+0

如果只更改现有项目,则不需要清除菜单。如果您正在重新生成或重新填充您可能需要的全新菜单。 – adamp 2010-09-09 22:36:42

+0

我无法清除并重新创建菜单项目。我尝试使用menu.getPositon()获取单个项目,但是当我更改标题时,更改未反映在菜单中。 – pcm2a 2010-09-10 17:29:43

0
invalidateOptionsMenu(); 
如果要更改推使用这个菜单