Fragment切换无数据

本文探讨了在Android中Fragment切换时出现无数据的可能原因,重点在于FragmentPagerAdapter初始化时使用了错误的FragmentManager对象。文章区分了V4包和app包下的Fragment,指出V4包适用于低版本Android,而app包适用于3.0以上版本,并提到了它们对应的Activity基类。解决方案在于正确选择getSupportFragmentManager()或getFragmentManager(),并提及了getChildFragmentManager()在Fragment嵌套时的使用。此外,还提到了ViewPager的setOffscreenPageLimit()方法对预加载页面的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值