7

我需要能够更改android上的选项菜单(按下菜单按钮时显示的菜单),以便在一种情况下(例如在按钮时),它将使用菜单中的特定菜单资源(XML文件,如/ res/menu/...),而在另一种情况下,使用不同的XML文件。android - 动态更改选项菜单,但通过从XML充气

到目前为止,我只看到没有xml的例子(例如herehere),它们工作正常,但我希望能够在某些情况下更改整个菜单。 我试图修改我找到的解决方案,但我的试验没有任何工作。

如果可能,我宁愿重新创建菜单,只有当它需要使用与当前菜单资源不同的菜单资源进行更新时。

请帮帮我。

回答

16

如果您想要在首次创建任何时间后更改选项菜单,则必须覆盖onPrepareOptionsMenu()方法。

public boolean onPrepareOptionsMenu (Menu menu) {  
    menu.clear();  
    if (CASE_1 == 0) { 
     CASE_1 = 1; 
     getMenuInflater().inflate(R.menu.secondmenu, menu); 
    } 
    else { 
     CASE_1 = 0; 
     getMenuInflater().inflate(R.menu.firstmenu, menu); 
    }  
    return super.onPrepareOptionsMenu(menu); 
} 

其中CASE_1指的是根据您的要求显示哪个菜单。

+0

这不是说它会在每次显示菜单时重新创建,而不是onCreateOptionsMenu? –

+0

是的,它会被重新创建,你说它(我宁愿重新创建菜单) –

+2

或者你可以根据需要让每个菜单的单个xml和setVisiblity为真或假。请参阅http://stackoverflow.com/questions/9030268/set-visibility-in-menu-programatically-android –