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