onPrepareOptionsMenu方法未被调用。

7
我在使用onPrepareOptionsMenu()时遇到了问题,无论我尝试什么,它都无法被调用。
我的应用程序架构如下:主Activity包含一个Fragment,该Fragment拥有一个ViewPager,而ViewPager又有四个子Fragment实例。目前,我正在主Activity中使用onCreateOptionsMenu()成功地填充初始选项菜单,但我希望添加一些与每个活动子Fragment相对应的额外选项。
在我的子Fragments中,我已确保在onCreate()中调用了setHasOptionsMenu(true),并且在onActivityCreated()中调用了getSherlockActivity().supportInvalidateOptionsMenu()。在主Activity中,onCreateOptionsMenu()在子Fragments实例化后被调用一次,不管它们是否包含supportInvalidateOptionsMenu()。每当ViewPager中的Fragment被替换时,它会随后再次被调用。
我尝试将onPrepareOptionsMenu()代码移到父Fragment和主Activity中,但均无效,这表明问题与嵌套Fragments的使用无关。我还尝试将onCreateOptionsMenu()方法从主Activity移至两个Fragments中,但它未被调用。
如果有人知道这里发生了什么,我会非常感激,因为我已经卡在这里两天了。
更新-我现在已经弄清楚了问题所在,只是我仍然不确定如何解决它。我正在4.2上进行测试,并且似乎onCreateOptionsMenu()在Activity的onResume()之后被调用- 如 在JB 4.2上onCreateOptionsMenu在onResume之后调用 中所示。我认为这意味着Fragments无法调用onPrepareOptionsMenu(),因为菜单甚至在它们实例化之后才存在。那么我该怎么解决?
1个回答

4

这是一个与ActionBarSherlock相关的问题,我在查看其github问题页面时忽略了它。基本上,嵌套片段中选项菜单的功能尚未添加,详情请见:https://github.com/JakeWharton/ActionBarSherlock/issues/828。目前我的解决方案是将Watson.java替换为评论中的修改文件之一。


it's in my comment :) - slinden77
我已经尝试过了,但似乎仅适用于引入childfragment manager的api级别17以上的版本。有什么建议吗? - bugraoral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接