Android 如何清除查看寻呼机片段

Android 如何清除查看寻呼机片段,android,android-viewpager,fragment,Android,Android Viewpager,Fragment,我有一个片段a,其中有一个带有两个片段1.1和片段1.2 这些片段是片段A的子片段 现在,当用户到达片段B,然后返回到A时,我需要更新 子片段1.1和1.2由片段B中的选项生成。 问题是,我无法更新片段,因为它们已经在childfragment管理器中,当我返回到未调用的视图页面的片段AgetItem(int位置)时也是如此。 在设置视图寻呼机适配器之前,我设法删除了所有子片段,但我不确定这是实现此功能的正确方法 片段A中有1.1和1.2引用 谢谢。一个简单的方法(不是最好的方法)是覆盖Page

我有一个
片段a
,其中有一个带有两个
片段1.1
片段1.2
这些片段是
片段A
的子片段

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

片段A中有1.1和1.2引用

谢谢。

一个简单的方法(不是最好的方法)是覆盖
PagerAdapter中的
getItemPosition()

public int getItemPosition(Object object) {
    return POSITION_NONE;
}
当适配器的
notifyDataSetChanged()
方法被调用时,
ViewPager
将调用它已经知道的视图上的
getItemPosition()
。通过返回POSITION_NONE,您告诉
ViewPager
删除视图。
ViewPager
删除视图后,它将调用
getItem()
以获取更新的视图

因此,当用户返回片段A时,您将调用:

viewPager.getAdapter().notifyDataSetChanged();

这将启动更新所有视图的过程。

也有同样的问题。对我来说,它可以覆盖碎片状态页面雷达

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

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

}

这对我有用。

你应该使用FragmentStatePagerAdapter而不是FragmentPagerAdapter

您只需拨打:

viewPager.removeAllViews()
viewPagerAdapter.notifyDataSetChanged()

嗨,克里斯,谢谢你的回复,但当我从片段B回到A时,我正在再次构建适配器。我创建了一个函数public void setData(List data){{u fragData=data;notifyDataSetChanged()}我在将适配器设置到viewpager后调用了它,但仍然没有效果。这是更好的方法。请注意,为
PagerAdapter
调用
notifyDataSetChanged()
意味着页面已更改位置;它不同于
AdapterVIew
适配器,因为它不处理项目本身的更改。在
setData()
中,可以尝试调用片段上的
getView().invalidate()
,以使用数据刷新视图。请确保检查
getView()
是否不为空,因为当片段未呈现时将为空。问题是在我调用setData中的notifyDataSetChanged()后,getItem(int position)从未调用过,我添加了getItemPosition,但没有Luckw如果在
setData()末尾调用
getView().invalidate()
?感谢您的帮助,您能添加解释吗?此代码将如何解决此问题。