我无法让 onPrepareOptionsMenu()
正常工作。无论我尝试什么,我都无法调用它。
我的应用程序的架构如下:我的主 Activity 包含一个包含 ViewPager 的 Fragment,ViewPager 又具有四个子 Fragment 实例。目前,我正在(成功地)使用 onCreateOptionsMenu()
填充 Activity 中的初始选项菜单,但我希望添加一些与每个 Activity 子 Fragment 相对应的额外选项。
在我的子 fragment 中,我确保 setHasOptionsMenu(true)
在 onCreate()
中被调用并且 getSherlockActivity().supportInvalidateOptionsMenu( )
在 onActivityCreated()
中被调用。在主 Activity 中,onCreateOptionsMenu()
在子 Fragment 实例化后调用一次,无论它们是否包含 supportInvalidateOptionsMenu()
。每当替换 Pager 中的 Fragment 时,它随后都会再次调用。
我已经尝试将 onPrepareOptionsMenu()
代码向上移动到父 Fragment 和主 Activity - 无济于事,这表明问题与我使用嵌套不相关 fragment 。我还尝试将 onCreateOptionsMenu()
方法从主 Activity 向下移动到两个 fragment ,在那里它未被调用。
如果有人知道这里发生了什么,我将不胜感激,因为我已经坚持了两天了。
更新 - 我已经弄清楚现在的问题是什么,只是我仍然不确定如何解决它。我在 4.2 上进行测试,似乎 onCreateOptionsMenu()
在 Activity 中的 onResume()
之后被调用 - 如 onCreateOptionsMenu called after onResume on JB 4.2 所示.我认为这意味着 fragment 无法调用 onPrepareOptionsMenu()
,因为菜单在它们被实例化之后才存在。那么我该如何解决呢?
最佳答案
这是一个不可避免的 ActionBarSherlock 问题,我在 github 上查看它的问题页面时忽略了它。基本上,嵌套 fragment 中选项菜单的功能尚未添加,请参阅:https://github.com/JakeWharton/ActionBarSherlock/issues/828 .我现在的解决方案是用评论中修改过的文件之一替换 Watson.java。
关于android - onPrepareOptionsMenu 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17196309/