4

我有兩個片段的佈局,兩個片段都有自己的動作條,每個動作條都有自己的動作項和菜單。當我的應用處於橫向模式並且兩個片段都顯示在屏幕上時,它看起來像框架選擇在「右」(或第二片段)上顯示操作欄,這意味着左邊的片段(第一片段)缺少其操作項目和菜單選項。具有兩個片段的處理動作條

當應用程序處於縱向模式時,一切正常,所以我不確定是否應該在顯示時處理這些碎片。謝謝。

編輯

在我的每一個片段,我使用此代碼添加菜單項的操作欄:

在片段1:

@Override 
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) { 
     inflater.inflate(R.menu.fragment_menu_1, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 

在片段2:

@Override 
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) { 
     inflater.inflate(R.menu.fragment_menu_2, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 

更新:

顯然使用setRetainInstance(true)是導致菜單無法刷新的原因。我正在使用它,因爲我有一個AsyncTask,如果設備被旋轉,它將拋出一個異常。所以我解決了一個問題,但又打破

+0

有一個帖子在這裏提供這個問題的答案http://www.grokkingandroid.com/adding-action-items-from-within-fragments/ – firebear 2013-03-26 11:25:13

+0

[片段在行動欄教程](http:// v4all123.blogspot.in/2013/07/simple-fragments-tutorial.html)。 – Gunaseelan 2013-07-23 04:42:08

回答

9

我認爲你正在考慮這個錯誤。操作欄不顯示爲任何片段的一部分,但實際上是作爲活動的一部分。如果您在碎片中聲明通過setHasOptionsMenu(true)提供操作項目,則所有操作都將顯示爲操作欄的一部分。然後,您可以通過覆蓋onOptionsItemSelected(MenuItem item)來採取適當的措施。

+0

查看OP,我添加了一些代碼,但是我正在爲onCreateOptionsMenu中的兩個片段中的菜單佈局充氣。操作欄不應該顯示這兩個菜單嗎? – 2012-04-10 23:45:57

+0

您是否在兩者中調用'setHasOptionsMenu(true)'? – 2012-04-11 05:22:39

+0

是的,因爲在縱向模式下,當片段位於不同的屏幕上時,每個片段的菜單正確顯示。我還應該注意到我使用的是ActionBarSherlock,不知道這是否有所作爲。 – 2012-04-11 14:05:26