2012-12-09 63 views
15

我正在實現新的嵌套片段功能並陷入了一個問題。 我認爲基本上是這樣的:它包括一個片段(),該片段()包括具有3頁它們中的每一個片段尋呼機適配器(ç 一個主活性()也是如此。 以前新的getchildfragmentmanger這是不可行的,但它完美的作品。 但確實出現了一個問題,我希望片段C能夠參與填充選項菜單。 我累了把setHasOptionsMenu(真)在onActivityCreated方法上我的每一個Ç片段和壓倒一切也onCreateOptionsMenu但沒有任何反應...... 如果我嘗試從片段(是的容器填充菜單尋呼機適配器)我可以更改菜單項...Android - NestedFragments參與填充選項菜單

任何想法?

謝謝。

回答

11

從我的源代碼的讀取,看來的FragmentManagerActivity的實現只用root FragmentManager連續工作增加了選項菜單/動作條,不和孩子FragmentManager實例。

片段B可能需要代表ViewPager的內容管理選項菜單/操作欄,根據顯示和隱藏在尋呼機中的頁面更改選項菜單/操作欄中的內容。

+0

喜CommonsWare,感謝您的快速重放,這就是我最後做,但我希望有更多的封裝解決方案。 – senior

+0

是.. !!我被困在這個問題上..我做了什麼標記墨菲告訴..感謝標記 –

+0

我可能知道你的解決方法是如何工作的嗎?我試了一切,它仍然搞砸了。 – Zyoo

16

是的,他們可以。

使用android 4.2或支持庫修改11嵌套片段參與填充選項菜單,因爲您需要在onCreate()期間調用setHasOptionsMenu(true)

但是,如果您使用的是ActionBarSherlock,他們不會,您必須從父代片段onCreateOptionsMenu()手動調用嵌套片段方法onCreateOptionsMenu()

更新issue

+0

你確定嗎?我使用ActionBarSherlock,但據我所知,當設備位於ICS上方時,ABS只使用普通的ActionBar。我正在使用嵌套片段並支持修訂版本11,但未創建菜單。 – tasomaniac

+0

@ tasomaniac是的,我確定。和我一樣,你總是可以查看ABS和Android的來源。問題不在ActionBar中,問題是ABS處理從onFreateOptionsPanel()從FragmentActivity到fragment而不是嵌套fragment的調用方式。 – kreker

+0

您是說如果我不使用ActionBarSherlock並使用Android 4.0進行編譯並使用支持庫,我可以在嵌套片段中使用onCreateOptionsMenu? – tasomaniac