我无法让onPrepareOptionsMenu()
正常工作。无论我尝试什么,我都无法让它被召唤。
我的应用程序的体系结构如下:我的主Activity包含一个包含ViewPager的Fragment,而ViewPager又有四个子Fragment实例。目前,我(已成功)使用onCreateOptionsMenu()
填充活动中的初始选项菜单,但我希望添加一些与每个活动子片段相对应的额外选项。
在我的子片段中,我确保在setHasOptionsMenu(true)
中调用onCreate()
,并在getSherlockActivity().supportInvalidateOptionsMenu()
中调用onActivityCreated()
。在主Activity中,onCreateOptionsMenu()
在子片段实例化后调用一次,无论它们是否包含supportInvalidateOptionsMenu()
。无论何时替换寻呼机中的片段,都会再次调用它。
我已经尝试将onPrepareOptionsMenu()
代码向上移动到父片段和主要活动 - 无济于事,这表明问题与我使用嵌套片段无关。我也尝试将onCreateOptionsMenu()
方法从主Activity移动到两个片段,在那里它不被调用。
如果有人知道这里发生了什么,我会非常感激,因为我已经坚持了两天了。
更新 - 我已经确切地解决了现在的问题,只是我仍然不确定如何解决它。我在4.2上测试,似乎onCreateOptionsMenu()
在活动中onResume()
之后调用 - 如onCreateOptionsMenu called after onResume on JB 4.2中所示。我认为这意味着片段无法调用onPrepareOptionsMenu()
,因为菜单在实例化后才会存在。那么我该如何解决这个问题?
答案 0 :(得分:4)
在某些不可避免的情况下,ActionBarSherlock的一个问题是我在github上检查其问题页面时忽略了这个问题。基本上,尚未添加嵌套片段中选项菜单的功能,请参阅:https://github.com/JakeWharton/ActionBarSherlock/issues/828。我现在的解决方案是用注释中的一个修改文件替换Watson.java。