原因
关于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)是一样的效果。