2016-04-15 60 views
1

我在ViewPager中有3个片段。当我从片段1滑动到3时,片段3刷新数据(重新执行所有方法),但当我从1滑动到2或从2滑动到3时,下一个片段不会刷新数据。在滑动条中刷新片段

你能帮我理解为什么吗?我怎样才能每次都提神醒脑?

我的活动扩展了基类FragmentActivity,片段扩展了基类Fragment。

回答

1

ViewPager在默认情况下使用setOffscreenPageLimit(1),这意味着它'缓存'左边的一个视图和右边的另一个视图,所以如果你在第二个片段上并且转到第一个或第三个,它将不会重新加载。如果你回到第一名和第二名,第三名将被重新加载。

setOffscreenPageLimit(0)产生一个警告(最小值必须是1)。

一个解决方案是加载在碎片中使用setUserVisibleHint来检测它们何时变得可见,并处理加载/刷新数据。

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // load data here 
    }else{ 
     // fragment is no longer visible 
    } 
} 

此答案取自this SO answer

-1

首先在片段结构中,android先前加载了左侧和右侧片段。例如在第二个片段中已经安装了1和2。有这个功能setOffscreenPageLimit

你的第二个问题:这是可能的,但以一个棘手的方式。我通常为此使用通知适配器。每次刷卡后,您可以使用notifyDataSetChanged();或将数据重新加载到适配器。