android - onPrepareOptionsMenu 未被调用

标签 android actionbarsherlock android-viewpager android-optionsmenu

我无法让 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/

相关文章:

java - 在 Android 上从 Java 设置 splitActionBarWhenNarrow

android - 页脚固定在 android 中的 viewpager 上

java - libgdx 在操作进行时禁用触摸

android - 将 AsyncTask 与来自数据库的 JSON 请求一起使用

android - 滚动时 SherlockFragments 中 ViewPager 的可见性问题(在 Gingerbread 中)

android - 在 ActionBarSherlock 中心设置自定义文本

android - ViewPagers 的隐式 Z 排序

android - viewpager setCurrentItem 不改变 tablayout 选择的颜色

java - 如何使用 Android 的 Handler.PostDelayed 使事件在指定时间发生?

android - Google Play 服务已过时。需要 10084000 但找到 9879470。无法更新