4

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

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

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

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

4

3 回答 3

3

我的解决方案是使用 的setOnPageChangeListener方法ViewPager来跟踪当前在回调中Fragment可见的索引。onPageSelected您仍然必须自己获取初始索引,但在我的情况下这是微不足道的

于 2011-07-27T13:26:04.323 回答
1

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

于 2011-07-26T14:46:33.017 回答
1

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

于 2013-05-10T05:54:27.227 回答