Android - 如何通过从XML中动态膨胀来更改选项菜单?

8
我需要能够更改Android上的选项菜单(按下菜单按钮后显示的菜单),以便在某种情况下(例如按下按钮时),它将使用特定的菜单资源(如/res/menu/...中的XML文件)来显示菜单,而在另一种情况下,则使用不同的XML文件。
到目前为止,我只看到了没有使用XML的示例(例如herehere),它们工作得很好,但我想能够在某些情况下更改整个菜单。我尝试修改我找到的解决方案,但我的所有尝试都没有成功。
如果可能的话,我希望仅在需要更新为与当前菜单不同的菜单资源时重新创建菜单。
请帮助我。
1个回答

17

如果您想在首次创建选项菜单后随时更改它,必须重写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是指根据您的要求选择要显示的菜单。


这不意味着每次显示菜单时都会重新创建它,而不是使用onCreateOptionsMenu吗? - android developer
是的,它将被重新创建,并且您已经说明了(我更喜欢重新创建菜单)。 - Shankar Agarwal
2
或者您可以拥有单个XML,并根据需要将每个菜单项的可见性设置为true或false。请参考此链接:https://dev59.com/6Gox5IYBdhLWcg3wsGWC - Shankar Agarwal
能否避免每次显示菜单时重新创建它?这是否很重要? - android developer
你得到了我的支持。谢谢。如果你知道避免重新创建菜单的方法,请告诉我。 - android developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接