我在viewpager中有3个片段,它是从FragmentStatePagerAdapter
实现的
我只想刷新中间片段,因为我有一个动画监听器。因此我尝试了这段代码:
@Override
public int getItemPosition(Object object) {
if (object instanceof MiddleFragment){
return POSITION_NONE;
}else {
return POSITION_UNCHANGED;
}
但对我不起作用,因为setOffscreenPageLimit
默认值为1,我看不到中间片段的任何刷新。我不知道这样做。
请指导我,提前致谢。
答案 0 :(得分:0)
维护您在viewpager中添加的片段的ArrayList。 您可以从arrayList中检索片段并执行更新。 看它是否有效!!!
编辑1:我正在为此添加一个示例。
ArrayList<Fragments> arrayList = new ArrayList<Fragment>();
在你的fragmentpageradapter的getItem方法中,在返回每个项目之前,将它添加到arraylist
@Override
public Fragment getItem(int position) {
Fragment f = new YourFragment();
arrayList.add(f);
return f;
}
当您愿意更新第二个片段时,您可以通过给定位置从arraylist中检索该片段,并执行您想要在其中执行的任何更新。
答案 1 :(得分:0)
您可以通过以下两种方式之一刷新片段,
1。使用refresh()
方法。
protected PopulareFragment populareFragment;
if(current_tab.contains("Middle Fragment")){
populareFragment.refresh();
}
2。或者只是将mTabHost.setCurrentTab(2);
添加到回调中。