如何清除查看分页器片段

时间:2015-07-09 13:34:42

标签: android android-viewpager fragment

我有fragment A,其中有一个包含两个fragment 1.1fragment 1.2的视图寻呼机 这些片段是fragment A的儿童片段。

现在,当用户访问Fragment B然后返回A时,我需要更新 子片段1.1和1.2由片段B内的选项组成。 问题是我不能更新片段,因为它们已经在childfragment manager中,当我返回到未调用的视图寻呼机的片段A getItem(int position)时也是如此。 在设置视图寻呼机适配器之前,我设法删除了所有子片段,但我不确定这是完成此功能的正确方法。

我在Fragment A中有1.1和1.2引用

感谢。

4 个答案:

答案 0 :(得分:5)

有同样的问题。对我来说,它可以覆盖FragmentStatePagerAdapter

@Override
public Parcelable saveState() {
    return null;
}

@Override
public void restoreState(Parcelable state, ClassLoader loader) {

}

这项工作适合我。

答案 1 :(得分:4)

执行此操作的一种简单方法(不是最好的方法)是覆盖getItemPosition()中的PagerAdapter

public int getItemPosition(Object object) {
    return POSITION_NONE;
}

调用适配器的notifyDataSetChanged()方法后,ViewPager会在已知的视图上调用getItemPosition()。通过返回POSITION_NONE,您告诉ViewPager删除视图。在ViewPager删除视图后,它会调用getItem()以获取更新的视图。

因此,当用户返回Fragment A时,您会调用:

viewPager.getAdapter().notifyDataSetChanged();

这将开始更新所有视图的过程。

答案 2 :(得分:1)

我花了两天时间与此斗争,现在我才找到答案:

只需使用FragmentStatePagerAdapter而不是FragmentPagerAdapter,它就像魅力一样!

答案 3 :(得分:0)

您可以致电:

viewPager.removeAllViews()
viewPagerAdapter.notifyDataSetChanged()