Fragment切换无数据

671 阅读1分钟

原因

关于 Fragment 之间切换无数据,可能的原因有多个。

我遇到的情况是因为 FragmentPagerAdapter 初始化的时候,传入参数 FragmentManager 对象的问题。

网上还有其他情况,还没遇到,先不作讨论。

Fragment

关于 Fragment,我们都知道有两个

android.support.v4.app.Fragment

android.app.Fragment

v4 包和 app 包的区别

  • V4 包下的 Fragment 兼容低版本到 1.6
  • app 包下的 Fragment 在系统 3.0 以上版本使用
  • 使用 V4 包下的,就要让它所在的 Activity 继承 FragmentActivity
    import android.support.v4.app.FragmentActivity;
  • 如果使用 app 包下的,继承 Activity 就行了

解决

上面说是因为 FragmentPagerAdapter 初始化的时候,传入参数 FragmentManager 对象的问题。

因为 FragmentManger 对象有三种,分别是:

  • getSupportFragmentManager()
  • getFragmentManger()
  • getChildFragmentManger()

它们的应用场景不同

使用 V4 包,就要配合 getSupportFragmentManager 使用。

使用 app 包,要配合 getFragmentManager 使用。

而 getChildFragmentManger 的使用,是在 Fragment 中嵌套 Fragment 的时候使用。

Ps:
我使用的是 ViewPager+FragmentPagerAdapter+Fragment(v4)

ViewPager 默认加载下一页,加载方法:
setOffscreenPageLimit()
setOffscreenPageLimit(0) 和 setOffscreenPageLimit(1) 是一样的效果。