安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解
来源:互联网 发布:linux 启动进程 start 编辑:程序博客网 时间:2024/05/17 22:18
安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解
getFragmentManager()所得到的是所在fragment 的父容器的管理器,
getChildFragmentManager()所得到的是在fragment
getSupportFragmentManager()主要用于支持 3.0以下android系统API版本,3.0以上系统可以直接调用getFragmentManager() ,因为fragment是3.0以后才出现的组件,为了这之前的系统版本也能使用fragment,借助V4包里面的getSupportFragmentManager()方法来间接获取FragmentManager()对象,3.0版本之后,有了Fragment的api,就可以直接使用getFragmentManager()这个方法来获取对象。
容易出现bug的地方
1.Fragment嵌套Fragment要用getChildFragmentManager
(1)问题重现
1>Fragment放ViewPager,ViewPager里面是fragment。第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失
2>Fragment低频率点击切换不会发生问题,过快点击马上崩溃
3>错误:Java.lang.IllegalArgumentException:No view found for id for fragment
3>调用fragment的replace方法不走onDestroy()、onDestroyView()方法,无法销毁fragment
4>在fragment中写倒计时,每次切换后倒计时越来越快的问题
(2)解决方案
FragmentManager childFragmentManager = getChildFragmentManager();ViewPager_Adapter viewPager_adapter = new ViewPager_Adapter(childFragmentManager, fragments); //FragmentPagerAdapte
getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。
getSupportFragmentManager()主要用于支持 3.0以下android系统API版本,3.0以上系统可以直接调用getFragmentManager() ,因为fragment是3.0以后才出现的组件,为了这之前的系统版本也能使用fragment,借助V4包里面的getSupportFragmentManager()方法来间接获取FragmentManager()对象,3.0版本之后,有了Fragment的api,就可以直接使用getFragmentManager()这个方法来获取对象。
容易出现bug的地方
1.Fragment嵌套Fragment要用getChildFragmentManager
(1)问题重现
1>Fragment放ViewPager,ViewPager里面是fragment。第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失
2>Fragment低频率点击切换不会发生问题,过快点击马上崩溃
3>错误:Java.lang.IllegalArgumentException:No view found for id for fragment
3>调用fragment的replace方法不走onDestroy()、onDestroyView()方法,无法销毁fragment
4>在fragment中写倒计时,每次切换后倒计时越来越快的问题
(2)解决方案
FragmentManager childFragmentManager = getChildFragmentManager();ViewPager_Adapter viewPager_adapter = new ViewPager_Adapter(childFragmentManager, fragments); //FragmentPagerAdapte
getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。
原文链接:链接大神》》》http://blog.csdn.net/allan_bst/article/details/64920076
- 安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解
- 安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解
- 区别getFragmentManager、getSupportFragmentManager和getChildFragmentManager
- 区别getFragmentManager、getSupportFragmentManager和getChildFragmentManager
- getSupportFragmentManager()和getChildFragmentManager()
- getFragmentManager()和getSupportFragmentManager()区别
- getChildFragmentManager()、 getFragmentManager()、getSupportFragmentManager()的区别
- android getFragmentManager、getSupportFragmentManager、getChildFragmentManager理解
- getChildFragmentManager和getSupportFragmentManager的区别
- getFragmentManager和getSupportFragmentManager的区别
- getFragmentManager和getSupportFragmentManager的区别
- getFragmentManager()和getSupportFragmentManager()的区别
- 关于getChildFragmentManager()、 getFragmentManager()、getSupportFragmentManager()的使用
- 关于getChildFragmentManager()、 getFragmentManager()、getSupportFragmentManager()的使用
- 关于getChildFragmentManager()、 getFragmentManager()、getSupportFragmentManager()的使用
- 关于getChildFragmentManager()、 getFragmentManager()、getSupportFragmentManager()的使用
- getFragmentManager和getSupportFragmentManager的区别是?
- getFragmentManager()和getSupportFragmentManager()的选择问题
- Java UDP 重发机制
- poj3468(区间更新)
- 正则表达式
- Design Pattern(5)-Visitor Pattern
- 【深入浅出java多线程】--基础准备篇
- 安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解
- 50个必备的实用jQuery代码段
- ref 和 out
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- 将字符串中的中文标点替换成英文标点
- 户外监测让谁来做最可靠?
- JS字符串操作
- postMessage实现跨域密码代添
- 未完成题目