为了账号安全,请及时绑定邮箱和手机立即绑定

fragment界面重叠问题的解决

标签:
Android

原因:为什么会出现界面重叠呢?因为每当我们离开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");
}

原文链接:http://www.apkbus.com/blog-813041-62913.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消