fragment的常用知识点

来源:互联网 发布:软件超频卡死 编辑:程序博客网 时间:2024/05/21 01:29
我们都知道fragment有两种添加的方式,一种是add  一种是replace 两种都可以实现我们的activity里面的布局添加fragment,但是我们发现如果你做页面切换时,同一个activiy里面的viewgroup多次addfragment那么他会根据你当前viewgroup的特性就行排列,那么我们就想到了repalce,replace顾名思义是替换fragment,他的一个运行的原理是移除添加的fragment 添加新的进去。这也就意味着你每调用一次replace他就会给你重新添加新的fragment也就意味着每次都会刷新你的fragment(fragment的生命周期都会执行),这里根据需求去取决你的使用,那么如果是用add又该如何进行操作。那么我么的事务为我们提供了一个方法叫hide可以去隐藏你添加的fragment,再使用show方法展示出我们隐藏的fragment就可以达到一个页面切换的效果。但是如果长时间在后台运行,gc回收了你的对象就可能导致你的fragment为空,这时候在展示将会出现重叠。为了解决该bug代码如下:
public void addfragment(Fragment on Fragment to,String tag){
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); 
   
fragmentTransaction .hide(on);
   if(!to.isaadded){
   fragmentTransaction .add(R.id.frg,to,tag).show(to);
}else{
if(to!=null){
to=fragmentTransaction .findfrgmentbytag(tag);
}

fragmentTransaction.show(to);
}
 
fragmentTransaction.comit();
}
0 0
原创粉丝点击