onPrepareOptionsMenu有什么作用?

时间:2013-05-26 10:52:00

标签: android menu optionmenu

我想为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。是吗?

谢谢...

3 个答案:

答案 0 :(得分:39)

查看API

  

准备要显示的屏幕标准选项菜单。每次显示菜单时都会调用此菜单。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。

答案 1 :(得分:7)

如果要在向用户显示菜单之前更改菜单,可以将代码放入onPrepareOptionsMenu。在某些情况下,我已经动态地使用它来禁用某些菜单选项。

作为一个人可能想要禁用菜单选项的示例,我有一个应用程序,其中有一种指定目的地的方法。我的一个菜单选项是计算到目的地的路线。但是,如果未指定目标,则该选项不适用,因此我使用onPrepareOptionsMenu在不适用时禁用该菜单选项。

从Android 3.0及更高版本开始,就是ActionBar,这是一个菜单栏。最重要的项目会进入ActionBar本身,但是当操作栏上没有足够的空间时会出现溢出。可以指定菜单项应始终位于溢出菜单中,而不应位于操作栏本身上。在某些设备上,操作栏溢出对应于设备上的永久菜单按钮,而在没有菜单按钮的其他设备上,溢出菜单在操作栏的右侧看作三个垂直点。 / p>

答案 2 :(得分:1)

首次创建活动时,会先调用onCreateOptionsMenu一次。如果返回false,则不显示任何选项菜单,并且永远不会调用onPrepareOptionsMenu。

如果onCreateOptionsMenu返回true,则在显示活动之前也会调用onPrepareOptionsMenu,并且每次选项菜单无效时也会调用onPrepareOptionsMenu。如果您需要在创建项目后启用/禁用,显示/隐藏或添加/删除项目,请使用onPrepareOptionsMenu。

如果您的菜单没有变化,请使用onCreateOptionsMenu。