繁体   English   中英

在运行时更改菜单

[英]Change menu at run-time

如何在 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 文档,请注意它说“必须”

在运行时更改菜单项

活动创建后,onCreateOptionsMenu() 方法只被调用一次,如上所述。 系统保留并重复使用您在此方法中定义的菜单,直到您的活动被销毁。 如果您想在第一次创建选项菜单后随时更改它,您必须重写 onPrepareOptionsMenu() 方法。

文档位于创建菜单

现在已经说过你可以做到这一点,只是不确定它是否受支持。 这只是我自己的测试代码,我每次都会交换菜单,您需要添加自己的逻辑

@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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM