@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { Log.d("Does", "get called"); inflater.inflate(R.menu.menuitem, menu); super.onCreateOptionsMenu(menu, inflater); }
下面是我在调用的onCreateView方法
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); return inflater.inflate(R.layout.layout1, container, false); }
我没有在操作栏中调用日志语句或菜单。
更新 :我尝试从片段的onCreate方法调用此方法,但未显示菜单。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); }
Menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/section" android:title="@string/section" android:icon="@drawable/ic_section" android:showAsAction="always" /> <item android:id="@+id/refresh" android:title="@string/refresh" android:icon="@drawable/ic_refresh" android:showAsAction="always" /> <item android:id="@+id/edit_patient" android:title="@string/edit_patient" android:icon="@drawable/ic_editpatient" android:showAsAction="always" /> <item android:id="@+id/about" android:title="@string/about" android:showAsAction="never" /> <item android:id="@+id/help" android:title="@string/help" android:showAsAction="never" /> <item android:id="@+id/signout" android:title="@string/signout" android:showAsAction="never" /> </menu>
您需要setHasOptionsMenu(true);在Fragment的一种生命周期方法中进行调用。最好从内部onCreate(...)。
setHasOptionsMenu(true);
onCreate(...)
在最简单的情况下,onCreateFragment 的方法如下所示:
onCreate
同样,super.onCreateOptionsMenu(menu, inflater);在自定义菜单放大后调用,会将刚刚放大的菜单重置为空菜单。
super.onCreateOptionsMenu(menu, inflater);
因此,请致电:
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { Log.d("Does", "get called"); super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menuitem, menu); }
要么:
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { Log.d("Does", "get called"); //no super call inflater.inflate(R.menu.menuitem, menu); }
另外,如果您正在Gingerbread设备上进行测试,则如果主机Activity不包含其自己的菜单项,则可能不会显示该菜单。
Activity