5

我的用例:

我有一个以 a 作为其唯一视图元素的活动,为其三个页面ViewPager设置了三个s(使用 a )。其中一个片段是,而另外两个常规s 包含一些信息图表。FragmentFragmentPagerAdapterListFragmentFragment

允许“检查”元素中的列表ListFragment,检查元素会调出上下文操作栏,显示对选定/选中项目可能执行的操作列表。

我的问题:

当我选择几个列表项时,CAB 就会出现。但是当我切换页面时,CAB 保持可见,呈现操作。更糟糕的是,这ViewPager似乎有时会破坏列表片段的视图 - 因此选择操作会引发"java.lang.IllegalStateException: Content view not yet created"异常。

我的问题:

  1. 当用户离开ListFragment页面时,如何让 CAB 消失?
  2. ListFragment(可选)当背面是并且某些项目仍然被检查时,我如何让 CAB 重新出现。
4

2 回答 2

1

您需要先将ViewPager.OnPageChangeListenerwith添加ViewPager.OnPageChangeListener到您的viewPager.

onPageSelected方法中调用您的方法ListFragment以关闭您的 CAB。

编辑:

要获取当前活动片段,您可以使用它的标签。可以使用以下方法计算标签:

private static String makeFragmentName(int viewId, int index) {
   return "android:switcher:" + viewId + ":" + index;
}

其中 viewId 是 viewpager 的 id 和索引选项卡索引(位置)

于 2013-02-26T15:32:57.490 回答
0

您还可以使用 setUserVisibleHint 方法对从片段内部隐藏的片段做出反应,如https://stackoverflow.com/a/11075663/1199911中所述

于 2014-01-27T08:59:51.137 回答