天天看点

Android fragment 重叠问题

 最近在做项目的时候,遇到了fragment重叠的问题。具体的情况是,我在一个fragment中,通过add的到FragmentTransaction的方式,又放了四个子fragment allFrg,movieFrg,newsFrg,otherFrg。当我点击allFrg对应tab键时,通过hide隐藏其他三个fragment,通过show来显示allFrg。正常情况下显示是对的,问题就在我切换他其他的app,操作一会之后,再回到当前的app,有很大几率会出现fragment重叠的现象。

        通过搜集相关资料,我找到了原因,在我切换到其他app的时候,fragment所在activity已经被销毁。并且通过

?

1 2 3 4 5 6

@Override

public

void

onSaveInstanceState(Bundle outState) {  

// TODO Auto-generated method stub        

Log.v(

"LH"

"onSaveInstanceState"

+outState);  

super

.onSaveInstanceState(outState);  

}

这个方法保存了相关的数据。

         当我再次回到这个app的时候,通过onCreate中的参数savedInstanceState恢复了之前的fragment。此时的FragmentTransaction中的相当于又再次add了fragment进去的,之前保存的fragment也还在。hide()和show()方法对之前保存的fragment已经失效了。所以出现了重叠的现象

解决方法:

直接在包含Fragment的Activity中复写

?

1 2 3 4 5

public

void

onSaveInstanceState(Bundle outState) {  

// TODO Auto-generated method stub       

//Log.v("LH", "onSaveInstanceState"+outState);  

//super.onSaveInstanceState(outState);   //将这一行注释掉,阻止activity保存fragment的状态

}

继续阅读