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管理器中,当我返回到未调用的视图页面的片段AgetItem(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()
?感谢您的帮助,您能添加解释吗?此代码将如何解决此问题。