onPrepareOptionsMenu不被调用

我无法使onPrepareOptionsMenu()正常工作。 无论我尝试什么,我都无法调用它。

我的应用程序的体系结构如下所示:我的主Activity包含一个保存ViewPager的Fragment,该ViewPager又具有四个子Fragment实例。 目前,我已经(成功)使用onCreateOptionsMenu() )填充Activity中的初始选项菜单,但是我希望添加一些与每个活动子Fragment相对应的额外选项。

在我的孩子片段中,我已经确定setHasOptionsMenu(true)onCreate()被调用,并且getSherlockActivity().supportInvalidateOptionsMenu()onActivityCreated()调用getSherlockActivity().supportInvalidateOptionsMenu() onActivityCreated() 。 在主Activity中, onCreateOptionsMenu()在子片段实例化后调用一次,无论它们是否包含supportInvalidateOptionsMenu() 。 随后在传呼机中的碎片被替换时再次调用它。

我试着将onPrepareOptionsMenu()代码上移到父Fragment和主Activity中 - 无济于事,这表明问题与我使用嵌套Fragments无关。 我也尝试将主Activity中的onCreateOptionsMenu()方法向下移动到两个片段,它们在那里不被调用。

如果任何人有任何想法发生了什么,我会非常感激,因为我已经坚持了两天了。

更新 - 我已经确定了现在的问题,只是我还不确定如何解决问题。 我在4.2上进行了测试,看起来onCreateOptionsMenu()在Activity的onResume()之后被调用 - 如在onCreateOptionsMenu中,在JB 4.2上的onResume之后调用的那样。 我认为这意味着片段不能调用onPrepareOptionsMenu()因为直到它们被实例化之后菜单才存在。 那么我该如何解决这个问题?


这在ActionBarSherlock中是不可避免的,我在检查github上的问题页面时忽略了这个问题。 基本上,嵌套片段中选项菜单的功能尚未添加,请参阅:https://github.com/JakeWharton/ActionBarSherlock/issues/828。 我现在的解决方案是用注释中的修改文件之一替换Watson.java。

链接地址: http://www.djcxy.com/p/71983.html

上一篇: onPrepareOptionsMenu is not called

下一篇: Derived curiously recurring templates and covariance