【发布时间】:2013-06-19 16:18:47
【问题描述】:
我无法让onPrepareOptionsMenu() 正常工作。无论我尝试什么,我都无法调用它。
我的应用程序的架构如下:我的主 Activity 包含一个 Fragment,其中包含一个 ViewPager,而 ViewPager 又具有四个子 Fragment 实例。目前,我(成功地)使用onCreateOptionsMenu() 填充活动中的初始选项菜单,但我希望添加一些与每个活动子片段相对应的额外选项。
在我的子 Fragments 中,我确保 setHasOptionsMenu(true) 在 onCreate() 中被调用,getSherlockActivity().supportInvalidateOptionsMenu() 在 onActivityCreated() 中被调用。在主 Activity 中,在子 Fragment 实例化后调用一次onCreateOptionsMenu(),无论它们是否包含supportInvalidateOptionsMenu()。每当 Pager 中的 Fragment 被替换时,它就会被再次调用。
我尝试将onPrepareOptionsMenu() 代码向上移动到父片段和主活动 - 无济于事,这表明问题与我使用嵌套片段无关。我还尝试将 onCreateOptionsMenu() 方法从主 Activity 移动到两个片段,在那里它没有被调用。
如果有人知道这里发生了什么,我将非常感激,因为我已经坚持了两天了。
更新 - 我已经弄清楚了现在的问题,只是我仍然不确定如何解决它。我正在 4.2 上进行测试,似乎 onCreateOptionsMenu() 在活动中的 onResume() 之后被调用 - 如 onCreateOptionsMenu called after onResume on JB 4.2 所示。我认为这意味着片段不能调用onPrepareOptionsMenu(),因为菜单在它们被实例化之前甚至不存在。那我该如何解决呢?
【问题讨论】:
标签: android actionbarsherlock android-viewpager android-optionsmenu