我對我最後的問題提供了很有幫助的提示,我希望這次不會有所不同:)首先,讓我解釋一下情況。我有一個有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" />
從答案,這似乎是這可能是由許多事情造成的。我有這個問題,因爲我使用的是FragmentActivity代替AppCompatActivity的,它爲我改變了 – TallChuck