getChildFragmentManager和getsupportFragmentManager和getFragmentManager的关系
getChildFragmentManager和getsupportFragmentManager和getFragmentManager的关系getFragmentManager()所得到的是Fragment的父容器的管理者。getChildFragmentManager()所得到的是在fragment里面的子容器的管理者。getSupportFragmentManager()主要用于支...
·
getChildFragmentManager和getsupportFragmentManager和getFragmentManager的关系
- getFragmentManager()所得到的是Fragment的父容器的管理者。
- getChildFragmentManager()所得到的是在fragment里面的子容器的管理者。
- getSupportFragmentManager()主要用于支持3.0以下的版本,3.0以上的可以直接调用getFragmetnMaanager()。因为fragment是3.0以后才出现的组件,为了让之前的的版本也可以使用,所以才有了getSupportFragmentManager();
Fragment嵌套Fragment要用getChildFragmentManager
容易出错的地方:
- Fragment放ViewPager,ViewPager里面是fragment。第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失
- Fragment低频率点击切换不会发生问题,过快点击马上崩溃
- 错误:java.lang.IllegalArgumentException:No view found for id for fragment
- 调用fragment的replace方法不走onDestroy()、onDestroyView()方法,无法销毁fragment
- 在fragment中写倒计时,每次切换后倒计时越来越快的问题!
解决方案
Frag7_ViewPager_Adapter adapter = new Frag7_ViewPager_Adapter(
getChildFragmentManager(),list);
getFragmentManager到的是activitry对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就要利用getChildFragmentManager()了。
更多推荐
已为社区贡献1条内容
所有评论(0)