Android Fragment 切换时布局重叠

来源:互联网 发布:淘宝开店上传照片要求 编辑:程序博客网 时间:2024/06/05 05:42

用Fragment模拟Tab页面,正常情况不会发生切换时重叠问题,但是当应用在后台运行时,设置更改语言选项或系统不小心强制关闭后,再进入应用会同时显示多个Tab内容,UI发生重叠。

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

解决方法1:

各个对应的Fragment xml文件设置不透明的背景颜色,掩盖掉其它fragment:android:background="@color/white"

解决方法2:

@Override

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

解决方法3:

Fragment frag[]={new GameFragment(),new LiveFragment(),new DataFragment(),new PersonalFragment()};

FragmentManager fm = getSupportFragmentManager();
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mian);
if(savedInstanceState!=null){
//tag为add时的tag
for(int i=0;i<frag.length;i++){
Fragment fragtag = fm.findFragmentByTag("tag"+i);
if (fragtag!=null) {
frag[i]=fragtag;
}
}
}
}

http://blog.csdn.net/a704755096/article/details/48031913

1 2
原创粉丝点击