我很好奇在 Android 3.0+ 并针对 API 11 或更高版本时,是否会使用
我的想法如下:
一个
要更新ActionBar上的项目,您可以保留
因此,
调用
添加或删除片段是否以某种方式触发这一过程?
onPrepareOptionsMenu(Menu)
(以及由此延伸的onPreparePanel(int, View, Menu)
)。我的想法如下:
一个
Activity
的ActionBar
从onCreateOptionsMenu(Menu)
获取其内容,您可以填充XML菜单资源、直接添加选项,或两者兼而有之。该活动的任何片段也会收到此调用,并可以选择执行相同的操作。要更新ActionBar上的项目,您可以保留
Menu
实例或调用invalidateOptionsMenu()
,这将导致再次调用onCreateOptionsMenu(Menu)
。因此,
onPrepareOptionsMenu(Menu)
是否仅存在以支持不针对API 11或更高版本的旧应用程序?调用
getActionBar().hide()
和getActionBar().show()
是否可能会触发对onPrepareOptionsMenu(Menu)
的调用?添加或删除片段是否以某种方式触发这一过程?
invalidateOptionsMenu()
后,我会接收到对onCreateOptionsMenu()
和onPrepareOptionsMenu()
的调用。我不认为它们一定会互相调用,但它们按照这个顺序来。因此,我将所有我的运行时更改保存在onPrepareOptionsMenu()
中,在onCreateOptionsMenu()
中,我只是填充菜单。在3.0之前,当用户打开菜单时,它会处理自己,在>3.0上,我只需在需要刷新ActionBar时调用invalidateOptionsMenu
。 - Tony Chan