标签:管理器 Fragment ViewPager fragment getFragmentManager 里面 getChildFragmentManager 加载
今天,在对项目进行修改的时候,发现了一个问题,在此记录下。
我在Activity里面添加了几个frament界面,然后又在其中一个fragment里面又加了几个fragment,这里面用到了slidingTabLayout+Viewpager+fragment,结果出现了以下情况:
这是fragment里面再加fragment没问题的情况。但下面这张就是有问题的了:
再看看代码:(两个部分都差不多)
解决方法:
viewPager.setAdapter(new HomeSlidAdapter(getChildFragmentManager(),mTitles,fragments));
将getFragmentManager改为getChildFragmentManager即可。
原因:
getFragmentManager是fragment所在父容器的碎片管理,而getChildFragmentManager是fragment所在子容器的碎片管理。如果用getFragmentManager会在viewpager中出现fragment不会加载的情况,所以切换回去就出现了白板。
注意:
getChildFragmentManager是Fragment中的方法,获取的是当前这个Fragment中子一级的Fragment的管理器,比如Activity中有个Fragment,Fragment里面又有Fragment,而Fragment中也有getFragmentManager,获取的是这个Fragment的管理器,这两个是不同的。
分析自己错误的原因:
我之前写的是getFragmentManager,得到的是自己本身的管理器,而我要管理的其实是另外两个子fragment,这样就肯定错了,所以要用getChildFragmentManager。
标签:管理器,Fragment,ViewPager,fragment,getFragmentManager,里面,getChildFragmentManager,加载 来源: https://blog.csdn.net/qq_41234663/article/details/116650466
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。