我很好奇在针对API 11或更高版本时如何(如果有的话)onPrepareOptionsMenu(Menu)
(以及扩展名为onPreparePanel(int, View, Menu)
)在Android 3.0+上使用。在Android 3.0+上使用`onPrepareOptionsMenu()`
我的思路如下:
的Activity
的ActionBar
从onCreateOptionsMenu(Menu)
接收其内容在这里你可以膨胀的XML菜单资源,直接添加项目,或两者的某种组合。活动的任何片段也将接收此调用,并可选择执行相同操作。
要更新ActionBar上的项目,您可以保留Menu
实例或致电invalidateOptionsMenu()
,然后再结束调用onCreateOptionsMenu(Menu)
。
因此,是否onPrepareOptionsMenu(Menu)
然后只支持遗留应用程序不支持API 11或更新?
拨打getActionBar().hide()
和getActionBar().show()
是否可能触发onPrepareOptionsMenu(Menu)
?
是否添加或删除片段以某种方式触发此?
我实际上得到不同的行为。在调用'invalidateOptionsMenu()'后,测试3.2和4.1.1,我调用了'onCreateOptionsMenu()',然后调用'onPrepareOptionsMenu()'。我不认为他们必须互相呼叫,但这是他们进来的顺序。因此,我在'onPrepareOptionsMenu()'和onCreateOptionsMenu()'中保留了所有运行时更改,我只对该菜单进行充气。在3.0之前,当用户打开菜单时,它会自行处理,当> 3.0时,我需要刷新ActionBar时调用'invalidateOptionsMenu'。 – 2012-10-11 00:50:00