Android中Fragment嵌套ViewPager,ViewPager嵌套Fragment导致二次进入时没有数据

#
Android中Fragment嵌套ViewPager,ViewPager嵌套Fragment导致二次进入时没有数据

作者:燕潇洒

导读:在项目中使用Fragment嵌套ViewPager,而ViewPager还要嵌套Fragment,一开始还没有出现问题,可是到二次刷新时,发现最内层的Fragment没有数据了,很郁闷,经过百度,在这个人的博客内发现了解决方法;

解决方式:
可以参考上面给的链接,作者只说了两句话:

解决:

在传递pagerAdapter 的参数中使用:
已经解决了。用新的V4包中的getChildFragmentManager就可以了

于是就搜索这个方法,明白了解决方式,在使用ViewPgaer嵌套Fragment的时候,。需要设置Adapter,在构造函数中,我们需要传入一个FragmentManager对象,正常情况下,要传getFragmentManager();方法就可以。这是没有出现Fragment数据丢失的情况,现在出现了这个情况,博客博主使用getChildFragmentManager();解决了他遇到的问题。

我们来看一下getChildFragmentManager();源码

/**
* Return a private FragmentManager for placing and managing Fragments
* inside of this Fragment.
*/
final public FragmentManager getChildFragmentManager() {
if (mChildFragmentManager == null) {
instantiateChildFragmentManager();
if (mState >= RESUMED) {
mChildFragmentManager.dispatchResume();
} else if (mState >= STARTED) {
mChildFragmentManager.dispatchStart();
} else if (mState >= ACTIVITY_CREATED) {
mChildFragmentManager.dispatchActivityCreated();
} else if (mState >= CREATED) {
mChildFragmentManager.dispatchCreate();
}
}
return mChildFragmentManager;
}

注释的大致意思:

返回一个专用的FragmentManager,用于放置和管理内容。
android官方对它的解释是,返回一个FragmentManager为了设置和管理当前Fragment内部的Fragment的们。举个例子,在Fragment布局中添加了一个Fragment容器,目的是在Fragment执行的过程中动态的添加一个Fragment,并且对他进行操作。

而getFragmentManager();的方法解释:

是为了获取能管理和当前Activity有关联的Fragment的FragmentManager

总结:

需要管理相互独立的并且隶属于ActivityFragment使用FragmentManager(),而在Fragment中动态的添加Fragment要使用getChildFragmetManager()来管理!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值