15

我正在实现新的嵌套片段功能并且偶然发现了一个问题。我的观点基本上是这样的:一个主要活动(A)包括一个片段(B),这个片段(B)包括一个分页适配器,它有 3 个页面,每个页面也是一个片段(C)。在新的 getchildfragmentmanger 之前,这是不可行的,但它工作得很好。但是确实出现了一个问题,我希望片段 C 能够参与填充选项菜单。我厌倦了将 setHasOptionsMenu(true) 放在我的每个C片段的 onActivityCreated 方法中,并覆盖 onCreateOptionsMenu 但没有任何反应......如果我尝试从片段B填充菜单(这是寻呼机适配器的容器)我可以更改菜单项...

有什么想法吗 ?

谢谢。

4

2 回答 2

16

是的他们可以。

使用 android 4.2 或支持库修订版 11 嵌套片段参与填充选项菜单,因为您始终需要setHasOptionsMenu(true)onCreate().

但是如果你使用 ActionBarSherlock 他们不会,你必须从父片段onCreateOptionsMenu()嵌套片段方法手动调用onCreateOptionsMenu()

更新问题

于 2013-02-18T18:00:32.353 回答
11

FragmentManager从我对源代码的阅读来看,似乎Activity只有根的FragmentManager实现才能添加到选项菜单/操作栏,而不是子FragmentManager实例。

片段 B 可能需要代表 的内容管理选项菜单/操作栏,ViewPager根据分页器中显示和隐藏的页面更改选项菜单/操作栏中的内容。

于 2012-12-09T13:15:27.090 回答