博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之Fragment的替换显示反复创建问题
阅读量:4497 次
发布时间:2019-06-08

本文共 1368 字,大约阅读时间需要 4 分钟。

一般写程序时我们都是得到FragmentManager,然后开启一个事务,然后进行Fragment的替换,然后提交事务。

//1.得到FragmentManger        FragmentManager fm = getSupportFragmentManager();//        //2.开启事务        FragmentTransaction transaction = fm.beginTransaction();//        //3.替换        transaction.replace(R.id.fl_content, fragment);//        //4.提交事务        transaction.commit();

 

但是,在实际的开发中,这种方式会导致Fragment的频繁创建,消耗用户的流量,所有提出以下优化:

就是用Add()和Hide() ,讲之前的Fragment隐藏,然后把要显示的Fragment添加进去,当要显示之前那个Fragment的时候,直接show()出来就可以了。

private void switchFrament(Fragment from,Fragment to) {        if(from != to){            mContent = to;            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();            //才切换            //判断有没有被添加            if(!to.isAdded()){                //to没有被添加                //from隐藏                if(from != null){                    ft.hide(from);                }                //添加to                if(to != null){                    ft.add(R.id.fl_content,to).commit();                }            }else{                //to已经被添加                // from隐藏                if(from != null){                    ft.hide(from);                }                //显示to                if(to != null){                    ft.show(to).commit();                }            }        }    }

 

提示:记得在add()  Fragment的时候判断是否为null.

转载于:https://www.cnblogs.com/Godfunc/p/6433373.html

你可能感兴趣的文章
Linux下Dropbox的安装
查看>>
CSS权重及样式优先级问题
查看>>
css 浮动
查看>>
[BZOJ]2653: middle
查看>>
笛卡尔树
查看>>
Sqoop 工具使用
查看>>
hadoop生态--Zookeeper
查看>>
Class.forName(String driverClassName)加载JDBC驱动程序时,底层都做了些什么???...
查看>>
2.安装中国版本的firefox
查看>>
mysql导出CSV格式的文件
查看>>
NetWaiting 完美卸载方法
查看>>
SpringBoot集成MybatisPlus
查看>>
人生规划和GTD——“知”、“得”与“合”
查看>>
Linux学习笔记(13)-进程通信|命名管道
查看>>
Ubuntu 目录结构
查看>>
Linux笔记一
查看>>
[ 51Nod 1327 ] 棋盘游戏
查看>>
Windows 10 内置管理员无法打开Metro应用方法
查看>>
MySql按每日、每周、每月分组统计数据
查看>>
[转]spring4.x注解概述
查看>>