getFragmentManager与getChildFragmentManager,解决fragment白屏

getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。
getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。
在使用fragment时 遇到
getFragmentManager()和getChildFragmentManager()的使用,
getFragmentManager()是所在fragment 父容器的碎片管理,
getChildFragmentManager()是在fragment 里面子容器的碎片管理。

getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。

Fragment嵌套Fragment要用getChildFragmentManager。

遇到一个问题,Fragment放ViewPager,ViewPager里面是fragment。第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失。

用的FragmentPagerAdapter.打Log发现FragmentPagerAdapter的getItem也不会调用,一直找不出原因。翻网上的回复终于找到答案。

本来里面的fragment用的还是getFragmentManager,Fragment嵌套Fragment时,里面要用getChildFragmentManager。

FragmentManager childFragmentManager = getChildFragmentManager();
ViewPager_Adapter viewPager_adapter = new ViewPager_Adapter(childFragmentManager, fragments); //FragmentPagerAdapter

The definition of getChildFragmentManager() is:

Return a private FragmentManager for placing and managing Fragments inside of this Fragment.

Meanwhile the definition of getFragmentManager() (or in this case getSupportFragmentManager()) is:

Return the FragmentManager for interacting with fragments associated with this fragment‘s activity.

Basically, the difference is that Fragment‘s now have their own internal FragmentManager that can handle Fragments. The child FragmentManager is the one that handles Fragments contained within only the Fragment that it was added to. The other FragmentManager is contained within the entire Activity.

In this case, what I‘m guessing is you‘ve added the Fragments to the Activity‘s FragmentManager. You get the child FragmentManager which doesn‘t contain what you are looking for. Thus you get the exception because it can‘t find the Fragment with the given ID because it‘s in a different FragmentManager.

也就是说child FragmentManager是对你应用的那个Fragment的,而FragmentManager是包含在activity中的,所以有可能出现找不到对应的fragment片段的情况而显示空白。

=============================================

mSectionsPagerAdapter = new SectionsPagerAdapter(getActivity().getSupportFragmentManager());

在Fragment里面嵌套Fragment 的话,不要用上面的那句。。。会在ViewPager中出现。有些Fragment 不会加载的情况。。。既ViewPager 加载 Fragment 空白页的情况。。。。

所以   Fragment里面嵌套Fragment 的话:一定要用getChildFragmentManager();

mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());

时间: 2024-10-30 06:23:25

getFragmentManager与getChildFragmentManager,解决fragment白屏的相关文章

ipad mini2 升级9.0.2后解锁白屏解决

解锁白屏是个什么现象?就是当你用手指滑动解锁后出现输入密码的界面后,1秒之内屏幕变白,中间一个黑色的苹果,几秒之后重新回到滑动解锁的界面.我出现这个现象不是因为升级了9.0.2,而是升级了9.0.2之后安装了搜狗输入法,我现在再也不敢乱装软件了(我没有越狱). 为了解决这个问题我试过很多方法,iTunes的恢复并更新也没有作用,要么更新失败,要么更新完毕后在“滑动来升级”的界面还是会遇到和解锁一样的白屏. 非常不情愿的,像是在做广告的,我是用爱思助手软件解决这个问题的.通过这个软件我将系统重新刷

Extjs4.2 Desktop 桌面图标拖动白屏的解决

上次做了个extjs4.2的desktop桌面demo,把desktop从原始包中剥离出来,并实现了桌面图标换列,桌面图标拖动,但用户反映桌面图标拖动会出现白屏,经测试,在 extjs4.2和Extjs5.0中都存在这个问题, 经反复跟踪调试,发现自己增加的代码并没有问题,问题出在extjs的自定义class里面, 在extjs4.1的  Ext.define('Ext.dd.DragZone' ...的定义中 有 afterRepair : function(){ var me = this;

Android开发之解决APP启动白屏或者黑屏闪现的问题

在做搜芽的过程中,发现那个外包人缘做的不行,因为启动的时候会停顿,然后白屏一会,联想到几个月前我在我的三僚企业通信软件里面拉起9K-Mail的时候也会黑屏,所以决定学习一下.解决一下.这不,万能的网络还是非常有用的. 在这里总结一下. (参考及转载:http://www.2cto.com/kf/201409/339293.html) 欢迎页启动的线程由于请求和处理的数据量过大而,导致欢迎页在出现之前界面上会有一个短暂的白色闪屏停留,当然白色闪屏的停留是因为 application 的主题样式an

nwjs解决页面透明化,启动时显示白屏的问题

这些天在弄nwjs还好能访问外网,可以看到官方的文档,要不然真是欲哭无泪了,找不到相关的文档解决不了问题.主要说说怎么页面透明化的时候,出现白屏一闪问题吧.主要工具: AngularJS+node+nw.js 来开发和传输数据显示的方式 官方文档: 在html页面实现: <body style="background-color:rgba(0,0,0,0)"> 在package.json 文件中实现 "window": { "frame&quo

解决React首屏加载白屏的问题

众所周知,在项目中如果在资源加载请求还未完成的时候,由于阻塞机制,会出现首页白屏的问题,产生很差的用户体验.本文以react为例,提供一个解决方法. 解决原理:使用  onreadystatechange  去监听 readyState,在资源加载完成之前加载一个只有框架的静态页面,页面不请求数据.当数据请求完成之后再将路由切换到真实的首页. 废话不多说,上代码: main.js import React from 'react'import ReactDom from 'react-dom'i

vue框架开发出现白屏的解决方法汇总

利用vue框架写一个简单的新闻客户端,修改了部分配置重启项目后发现又白屏的情况.特此做个简单的汇总. 1.npm run build打包页面空白 发现页面head中引用的js和css文件是出现了路径错误,这里修改如下: 解决位置:config/index.js文件:把assetsPublicPath: '/'改为assetsPublicPath: './' 2. iOS的Safari下无法打开网页 webpack-dev-server >= 2.8.0 的版本在 iOS Safari 下无法打开

解决android 启动白屏问题

Android 启动APP时黑屏白屏的三个解决方案 http://www.cnblogs.com/liqw/p/4263418.html android:windowSoftInputMode属性使用 http://www.blogjava.net/zhip/archive/2011/02/14/344258.html

react-native在Anroid真机运行时可能会遇到白屏的情况解决办法

为什么在真机上运行react-native应用时打开的应用是白屏? 测试环境:MIUI7 安装应用:MyProject 首先,打开手机设置应用,点击进入设置界面. 接下来,在设置应用中,选择"其他应用管理"选项. 接下来,打开选择已经安装的应用,选择"MyProject". 接下来,点击"权限管理",进入权限管理界面. 最后,点击"显示悬浮窗"这个权限,将该权限设置为允许. 最后重新打开MyProject应用如图: 如果WIF

Response.Write输出导致页面变形和页面白屏解决办法

方法一:此方法应该是微软官方推荐的方法,但弹出时会造成页面白屏.Page.RegisterStartupScript("TestEvent", "<script>alert('所属部门不能为空!');</script>");这个方法用于在页响应中发出客户端脚本块,前一个参数是该Script在页面中的唯一名称(随便起,不重复就行),后一个是脚本内容. 方法二:此方法有时候会在成页面模型混乱,造成字体变大没有样式.Response.Write(&