ViewPager

时间:2017-04-18 17:12:32

标签: android android-fragments

动态生成ViewPager Fragments

问题:

当用户从片段中滑出时,有什么方法可以捕捉到它(因此我可以将其置于“干净”,“初始化”状态)?

如何抓住Fragment 滚动的时刻?

问题

  • 检查了Fragment Lifecycle,但在滚出时没有触发任何内容(使用ViewPager
  • 只有滚动2个以上碎片(第3个碎片正在暂停/恢复)时才会触发生命周期阶段。

2 个答案:

答案 0 :(得分:2)

要在片段对用户可见时获取回调,您可以覆盖setUserVisibleHint方法,如下所示:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser){
        //Put your 'init' logic here
    }
}

变量isVisibleToUser将给出可见性的状态,因此您可以使用相同的方法来处理片段何时消失。

答案 1 :(得分:1)

  

addOnPageChangeListener

     

void addOnPageChangeListener(ViewPager.OnPageChangeListener listener)   添加一个侦听器,只要页面发生更改或逐步滚动,就会调用该侦听器。请参阅ViewPager.OnPageChangeListener。

     

添加侦听器的组件在完成后应小心删除它。取得视图所有权的其他组件可以调用clearOnPageChangeListeners()来删除所有连接的侦听器。

您可以实现此侦听器以跟踪ViewPager中片段的移动。

还有一个方法setOffscreenPageLimit(),它设置应保留在当前页面任一侧的页数,它的默认值为1,最小值可以设置为0。 / p>