我想为Android制作Option Menu
,我访问过这个网站。在他们的脚本中,我发现onPrepareOptionsMenu
,我尝试使用Android 2.3.3编译器编译和运行,有和没有onPrepareOptionsMenu
,两者都有效,但我没有看到任何区别。
public boolean onCreateOptionsMenu(Menu menu){
//code here
}
public boolean onOptionsItemSelected(MenuItem item){
//code here
}
public boolean onPrepareOptionsMenu(Menu menu){
//code here
}
实际上onPrepareOptionsMenu
方法是做什么的?这种方法很重要吗?我可以删除方法吗?
加成
哦,我也听说过Android 3.0中的Action Bar
,它说Action Bar是make Option Menu
的另一种方式,它使用onPrepareOptionsMenu
。是吗?
谢谢...
答案 0 :(得分:39)
查看API:
准备要显示的屏幕标准选项菜单。每次显示菜单时都会调用此菜单。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。
答案 1 :(得分:7)
如果要在向用户显示菜单之前更改菜单,可以将代码放入onPrepareOptionsMenu
。在某些情况下,我已经动态地使用它来禁用某些菜单选项。
作为一个人可能想要禁用菜单选项的示例,我有一个应用程序,其中有一种指定目的地的方法。我的一个菜单选项是计算到目的地的路线。但是,如果未指定目标,则该选项不适用,因此我使用onPrepareOptionsMenu
在不适用时禁用该菜单选项。
从Android 3.0及更高版本开始,就是ActionBar,这是一个菜单栏。最重要的项目会进入ActionBar本身,但是当操作栏上没有足够的空间时会出现溢出。可以指定菜单项应始终位于溢出菜单中,而不应位于操作栏本身上。在某些设备上,操作栏溢出对应于设备上的永久菜单按钮,而在没有菜单按钮的其他设备上,溢出菜单在操作栏的右侧看作三个垂直点。 / p>
答案 2 :(得分:1)
如果onCreateOptionsMenu返回true,则在显示活动之前也会调用onPrepareOptionsMenu,并且每次选项菜单无效时也会调用onPrepareOptionsMenu。如果您需要在创建项目后启用/禁用,显示/隐藏或添加/删除项目,请使用onPrepareOptionsMenu。
如果您的菜单没有变化,请使用onCreateOptionsMenu。