我的用例:
我有一个ViewPager
作为唯一视图元素的活动,为其三个页面设置了三个Fragment
(使用FragmentPagerAdapter
)。其中一个片段是ListFragment
,而另外两个常规Fragment
包含一些信息图。
ListFragment
中的列表允许“检查”元素,并且检查元素会显示上下文操作栏,显示所选/已检查项目上可能的操作列表。
我的问题:
当我选择几个列表项时,CAB会显示出来。但是当我切换页面时,CAB保持可见,呈现动作。更糟糕的是,ViewPager
似乎有时会破坏列表片段的视图 - 因此选择操作会引发"java.lang.IllegalStateException: Content view not yet created"
异常。
我的问题:
ListFragment
页面时,如何让CAB消失? ListFragment
后退并且仍然检查某些项目时,如何让CAB重新出现。答案 0 :(得分:1)
您需要先向ViewPager.OnPageChangeListener
添加ViewPager.OnPageChangeListener
viewPager
。
在 onPageSelected 方法中,调用ListFragment
中的方法来关闭您的CAB。
修改强>
要获取当前活动片段,您可以使用它的标记。可以使用此方法计算标记:
private static String makeFragmentName(int viewId, int index) {
return "android:switcher:" + viewId + ":" + index;
}
其中viewId是viewpager的id并索引选项卡索引(位置)
答案 1 :(得分:0)
您还可以使用方法setUserVisibleHint对片段内部隐藏的片段做出反应,如https://stackoverflow.com/a/11075663/1199911
中所述。