在多片段活动中使用“选项”菜单

时间:2011-07-26 14:23:59

标签: android android-fragments options-menu

我有FragmentActivity,其中包含FragmentStatePagerAdapter。寻呼机包含同一片段的多个实例,以便用户可以在列表中的项之间滑动。我希望能够为用户提供一个选项菜单,该菜单仅对可见项目起作用。

例如,我在片段内的图像视图中显示了一个图像列表。我想要一个选项菜单项,允许用户将图像设置为壁纸。

在我尝试此操作时,调用onPrepareOptionsMenu时,代码将以多个片段(通常是当前+下一个片段)调用。选择项目时也是如此。这会导致错误的图像被设置为壁纸。

如何阻止选项菜单触发超过当前可见片段?

3 个答案:

答案 0 :(得分:3)

我的解决方案是使用setOnPageChangeListener的{​​{1}}方法,以便跟踪ViewPager回调当前可见的Fragment索引。你仍然必须自己获得初始索引,但在我的情况下,这是微不足道的

答案 1 :(得分:1)

您可以截取活动的onOptionsItemSelected中的选项菜单回调,并在那里显式调用正确的片段中的项目,返回true表示您已经处理过它。

答案 2 :(得分:1)

诀窍是在填充菜单之前在每个片段上更改sethasoptions(true | false)。这已经帮助了我