我的最后一个问题得到了非常有用的提示,我希望这次不会有所不同:) 首先,让我解释一下情况。我有一个包含 2 个片段的活动。对于每个片段,我都有一个 xml 菜单布局,第一个有四个菜单条目,第二个只有一个。现在首先加载具有四个菜单项的片段。在我设置的 onCreate 方法中
this.setHasOptionsMenu(true);
onCreateOptionsMenu 方法
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fragshow, menu);
}
xml 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_refresh"
android:icon="@drawable/ic_action_search"
android:title="Refresh"
android:visible="true"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_clearall"
android:icon="@drawable/ic_action_search"
android:title="Clear"
android:visible="true"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_addcontent"
android:icon="@drawable/ic_action_search"
android:title="Add Content"
android:visible="true"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_newlist"
android:icon="@drawable/ic_action_search"
android:title="New List"
android:visible="true"
android:showAsAction="ifRoom|withText" />
</menu>
这工作正常。所有菜单项都在那里,我可以单击它们并做出响应。现在,当我单击“添加内容”菜单时,会加载另一个片段。我也设置了
this.setHasOptionsMenu(true);
onCreateOptionsMenu 方法
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
Log.i("FragCreateList","onCreateOptionsMenu called");
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fragcreatelist, menu);
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_editdone"
android:icon="@drawable/ic_action_search"
android:title="Edit Done"
android:visible="true"
android:showAsAction="ifRoom|withText" />
</menu>
但在新片段中,我看不到任何菜单项。既不是在操作栏中,也不是当我按下硬件菜单按钮时。在前一个片段中,两个菜单项在操作栏中,其余两个在按下硬件按钮时出现。但是这里什么都没有显示。我收到调用 onCreateOptionsMenu 方法的 logcat 消息,但没有任何反应。(我什至接到了对我的(空)onPrepareOptionsMenu 方法的调用,该方法应该在菜单显示之前调用,仍然没有)任何线索可能是错误的?调用 invalidateOptionsMenu 没有任何作用。此外,我不知道该调用哪一个,因为有一个 getActivity().invalidateOptionsMenu 和一个 getFragmentManager().invalidateOptionsMenu... 在此先感谢。
编辑 :
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />