在我的应用程序中,我有一些没有菜单项的活动,使用以下重写:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.appbar_menu_empty, menu);
return true;
}
这个很好用。如果我删除了覆盖,我在Android5.1上得到了同样的效果,即一个没有图标的操作栏。
所以问题是:我可以放弃覆盖吗?
Activity.onCreateOptionsMenu的文档声明:
默认实现使用标准的系统菜单项填充菜单。
那是什么意思?我是否需要预期Android会产生一些我没有显式添加的按钮呢?
发布于 2015-11-26 11:38:01
如果不想要菜单项,可以删除OncreateOptionsMenu()
。
如果要添加菜单项,请编辑资源/菜单目录中的menu.xml文件。
发布于 2015-11-26 12:03:23
在docs中,方法在活动类中定义如下
初始化活动的标准选项菜单的内容。你应该把你的菜单项放在菜单上。 在第一次显示“选项”菜单时,只调用一次。若要每次显示菜单时更新该菜单,请参见onPrepareOptionsMenu(android.view.Menu)。 默认实现使用标准的系统菜单项填充菜单。它们被放置在android.view.Menu.CATEGORY_SYSTEM组中,这样它们将与应用程序定义的菜单项一起正确地排序。派生类应该始终调用到基本实现。 您可以安全地保留菜单(以及从中创建的任何项目),根据需要对其进行修改,直到下次调用onCreateOptionsMenu()为止。 当您向菜单中添加项目时,可以实现活动的onOptionsItemSelected(android.view.MenuItem)方法,以便在那里处理它们。 参数:选择放置项目的“选项”菜单。返回:要显示菜单,必须返回true;如果返回false,则不会显示。
public boolean onCreateOptionsMenu(Menu menu) {
if (mParent != null) {
return mParent.onCreateOptionsMenu(menu);
}
return true;
}
还请检查这个线程,以便将onCreateOptionsMenu() calling super线程化
在这里检查活动类的代码,r1/android/app/Activity.java#Activity.onCreateOptionsMenu%28android.view.Menu%29
发布于 2015-11-26 11:42:36
请参阅这里的一些示例代码,其中需要在操作栏菜单中显示选项。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_act_add_recipe, menu);
super.onCreateOptionsMenu(menu, inflater);
}
/res/menu/menu_act_add_recipe.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_add_image"
android:icon="@drawable/ic_tab_add_image_white"
android:orderInCategory="100"
android:title="@string/action_preview"
app:showAsAction="always" />
<item
android:id="@+id/action_recipe_preview"
android:icon="@drawable/ic_tab_check_white"
android:orderInCategory="100"
android:title="@string/action_preview"
app:showAsAction="always" />
https://stackoverflow.com/questions/33937629
复制相似问题