FragmentActivity操作栏选项菜单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FragmentActivity操作栏选项菜单相关的知识,希望对你有一定的参考价值。
我正在尝试将ActionBar按钮添加到FragmentActivity中,我无法弄清楚我做错了什么。在运行应用程序时,我看到的是ActionBar上的默认菜单按钮而不是我的按钮。
FragmentActivity:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.animalsmenu,menu);
return true;
}
xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/dogs"
android:title="Dogs"
android:orderInCategory="1"
app:showAsAction="always">
</item>
FragmentActivity
类扩展(源自)Activity
类。 Activity
onCreateOptionsMenu(Menu menu)方法的文档说明如下......
默认实现使用标准系统菜单项填充菜单。它们放在CATEGORY_SYSTEM组中,以便使用应用程序定义的菜单项正确排序。派生类应始终调用基本实现。
换句话说,将代码更改为......
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.animalsmenu, menu);
super.onCreateOptionsMenu(menu);
return true;
}
这会将您的菜单项膨胀到传入您的重写方法的Menu
,然后将其传递给方法的父(super
)版本。
让你的MainActivity
扩展ActionBarActivity
而不是FragmentActivity
。
ActionBarActivity
本身延伸FragmentActivity
所以你应该没事。
public void setHasOptionsMenu(boolean hasMenu)通过接收对onCreateOptionsMenu(Menu,MenuInflater)和相关方法的调用,报告此片段希望参与填充选项菜单。
因此,你应该在你的setHasOptionsMenu(true)
中调用onCreate()
。
或者为了向后兼容,最好在onCreate()
结束时尽可能晚地调用此调用,或者甚至在onActivityCreated()
中稍后调试。尝试在onCreate()
或onActivityCreated()
中使用它。
希望这可以帮助。
以上是关于FragmentActivity操作栏选项菜单的主要内容,如果未能解决你的问题,请参考以下文章
各位好友,请问在Android开发中,FragmentActivity子类里覆的onCreateOptionsMenu方法无法显示菜单?
如何在 Android 4.2 中更改操作栏选项菜单的背景颜色?