原因:为什么会出现界面重叠呢?因为每当我们离开Activity的时候,切换到别的APP的时候,当内存不够用,Fragment所在Activity被销毁,会调用onSaveInstanceState()方法,Fragment都会被保存起来,当我再次回到这个app的时候,通过onCreate中的参数savedInstanceState恢复了之前的fragment,就导致了界面重叠。
解决办法:
1.在进入onCreate函数时,先去判断savedInstanceState是否为null,如果不为null,则表示里面有保存这个fragment。则不再重新去add这个fragment,而是通过Tag从前保存的数据中直接去读取,看一下代码:
public void onCreate(Bundle savedInstanceState) { fManager = getFragmentManager(); if (savedInstanceState != null) { fg1 = (AllOfficialAccountFragment) fManager.findFragmentByTag("fg1"); fg2 = (MovieOfficialAccountFragment) fManager.findFragmentByTag("fg2"); fg3 = (NewsOfficialAccountFragment) fManager.findFragmentByTag("fg3"); fg4 = (OtherOfficialAccountFragment) fManager.findFragmentByTag("fg4"); } super.onCreate(savedInstanceState); }
实例代码:
设置Tag的代码:
transaction.add(R.id.fragment_main, personalFragment,"person");
transaction.add(R.id.fragment_main, homeFragment,"home");
transaction.add(R.id.fragment_main, messageFragment,"message");
onCreate()方法中:
if(savedInstanceState!=null){
personalFragment= (PersonalFragment) fragmentManager.findFragmentByTag("person");
homeFragment= (HomeFragment) fragmentManager.findFragmentByTag("home");
messageFragment= (MessageFragment) fragmentManager.findFragmentByTag("message");
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦