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

4
我有一个 FragmentActivity,其中托管了一个 FragmentStatePagerAdapter。该分页包含多个相同片段的实例,以便用户可以在列表项之间滑动。我想能够为用户提供选项菜单,该菜单仅对可见项目起作用。
例如,我有一个图像列表,图像显示在片段内的图像视图中。我希望提供一个选项菜单项,允许用户将图像设置为壁纸。
目前,当我尝试这样做时,在调用 onPrepareOptionsMenu 时,会在多个片段中调用代码(通常是当前片段和下一片段)。当选择项目时也是如此。这会导致错误的图像被设置为壁纸。
如何防止选项菜单触发超过当前可见片段?
3个回答

3
我的解决方案是使用ViewPager的setOnPageChangeListener方法来跟踪当前可见的Fragment索引,使用onPageSelected回调函数。你仍然需要自己获取初始索引,但在我的情况下这很简单。

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

1

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


我不确定我理解了。你是说将onOptionsItemSelected代码放在FragmentActivity中?但是我如何获取正确的Fragment引用呢? - blork

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接