Fragment切换 replace 和 add 的比较 以及最佳方案
来源:互联网 发布:淘宝主营率是什么意思 编辑:程序博客网 时间:2024/06/13 22:21
参考:http://blog.csdn.net/shimiso/article/details/44677007
使用add方式 不及时hide会出现重叠的bug。
使用replace方式,虽然这种方式会避免上述的bug,但也是重复创建了对象。因为replace方式,对应的FrameLayout只有一 层,而add方式,这个FrameLayout其实有多层。但是这种方式的缺点是:每次replace会把生命周期全部执行一遍,如果在这些生命周期函数 里拉取数据的话,就会不断重复的加载刷新数据。
解决:
private void switchFragment(Fragment fragment) { if (mContent != fragment) { if (!fragment.isAdded()) {//判断fragment是否已经添加过 //先把当前的fragment隐藏,把用到的fragment添加上去 getSupportFragmentManager().beginTransaction().replace(R.id.home_container, fragment).commit();// getSupportFragmentManager().beginTransaction().hide(mContent).add(R.id.home_container, fragment).commit(); } else { //先把当前的fragment隐藏,把已经添加过的并需要用到的fragment显示出 getSupportFragmentManager().beginTransaction().hide(mContent).show(fragment).commit(); } mContent = fragment; } }
(mContent是提取的私有全局变量,当前页面是哪一个fragment就赋值给它)
当你的fragment有查询数据库,联网等操作的时候,由于事务的提交(commit)是异步进行的,切换fragment会出现一些意料之外的bug。采用这种方式比较稳妥。
阅读全文
0 0
- Fragment切换 replace 和 add 的比较 以及最佳方案
- Fragment add 和replace的区别
- android之fragment的两种使用方式(add和replace方式切换)
- android之fragment的两种使用方式(add和replace方式切换)
- android之fragment的两种使用方式(add和replace方式切换)
- android之fragment的两种使用方式(add和replace方式切换)
- Fragment的replace和add方法的区别
- fragment的add方法和replace方法的区别
- Fragment销毁时replace和add两个方法的区别
- 从Fragment被销毁看replace和add的区别
- Fragment销毁时replace和add两个方法的区别
- Fragment销毁时replace和add两个方法的区别
- 从Fragment被销毁看replace和add的区别
- Fragment销毁时replace和add两个方法的区别
- Fragment销毁时replace和add两个方法的区别
- Fragment销毁时replace和add两个方法的区别
- Fragment销毁时replace和add两个方法的区别
- Fragment的传值,使用,事务,Add和Replace
- caffe命令及其参数解析
- centOS7 配置Solr6.6.0
- python与linux共同修改ini配置文件时的空格、注释等问题解决办法
- MFC中listctrl图片拖拽效果
- 阻塞等待和忙等待,以及超时问题
- Fragment切换 replace 和 add 的比较 以及最佳方案
- Android Studio 引入第三方库
- Android WebView页面结束后视频播放还有声音问题
- OpenWrt MT7621使用pyinstaller打包失败解决办法
- BASE64编码、解码的C语言实现
- PHP提高in_array查找元素的方法
- android: viewpager+将activity转化成view
- 设置Jmeter的maven依赖,及maven编译的设置
- 常用正则表达式