不调用onPrepareOptionsMenu

时间:2013-06-19 16:18:47

标签: android actionbarsherlock android-viewpager android-optionsmenu

我无法让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(),因为菜单在实例化后才会存在。那么我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

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