android中的invalidateOptionsMenu()有什么用?

时间:2014-03-13 09:55:45

标签: android android-menu

当我浏览导航抽屉的示例代码时,我是android的新手我发现他调用了方法invalidateOptionsMenu()所以我搜索了它的功能但是找不到答案所以任何人都可以向我介绍它的功能我们应该使用它。

5 个答案:

答案 0 :(得分:9)

这个函数告诉android它应该重绘菜单。默认情况下,创建菜单后,每一帧都不会重绘(因为重复同一个菜单一遍又一遍都没用。)

当您在选项菜单中更改了某些内容(添加了元素,删除了元素或更改了文本)时,您应该调用此函数。通过这种方式,android会知道它会重新绘制菜单,并且您的更改将会出现。

希望这能回答你的问题

答案 1 :(得分:2)

我将此方法与操作栏结合使用:当我需要使用新菜单项填充操作栏时,我调用invalidateOptionsMenu(),然后调用onCreateOptionsMenu并且我可以膨胀我需要的菜单。 : - )

了解更多信息,请参阅http://developer.android.com/reference/android/app/Activity.html#invalidateOptionsMenu() 要么 Change options menu during runtime - invalidateOptionsMenu()

答案 2 :(得分:1)

这将触发对onCreateOptionsMenu的另一次调用,您可以在其中决定显示新菜单。这基本上是用新的菜单替换当前菜单的正确方法。

答案 3 :(得分:1)

创建Activity时,将调用onCreateOptionsMenu方法。在里面,您可以从menu.xml中注入菜单,手动构建它。但是,如果要在活动期间更改此菜单,则必须调用invalidateOptionsMenu();

例如:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (something) {
    //    buildOneMenu
    } else {
    //    buildAnotherMenu
    }
}

...

something = true;
invalidateOptionsMenu();

答案 4 :(得分:0)

invalidateOptionsMenu()用于说Android,菜单内容已更改,菜单应重新绘制。例如,单击在运行时添加另一个菜单项的按钮,或隐藏菜单项组。在这种情况下,您应该调用invalidateOptionsMenu(),以便系统可以在UI上重绘它。此方法是OS调用onPrepareOptionsMenu()的信号,您可以在其中实现必要的菜单操作。此外,OnCreateOptionsMenu()在活动(片段)创建期间仅被调用一次,因此此方法无法处理运行时菜单更改。