Fragment叠影问题

作者: 冯奕欢 | 来源:发表于2016-06-30 16:41 被阅读160次

我们用add和hide方式来控制Fragment的切换经常会遇到这个坑--叠影。
原因是在切换到其他app的时候,fragment所在activity已经被销毁。并且在onSaveInstanceState(Bundle outState)方法保存了相关的数据。

  @Override  
  public void onSaveInstanceState(Bundle outState) {      
  // TODO Autogenerated method stub            
      Log.v("LH", "onSaveInstanceState"+outState);      
      super.onSaveInstanceState(outState);  
  }

当我再次回到这个app的时候,通过onCreate中的参数savedInstanceState恢复了之前的fragment。此时的FragmentTransaction中的相当于又再次add了fragment进去的,之前保存的fragment也还在。hide()和show()方法对之前保存的fragment已经失效了。所以出现了重叠的现象。
解决方法如下,在进入onCreate函数时,先去判断savedInstanceState是否为null,如果不为null,则表示里面有保存这四个fragment。则不再重新去add这四个fragment,而是通过Tag从前保存的数据中直接去读取。相关代码如下:

  @Override  
  public void onCreate(Bundle savedInstanceState) {     
      fManager = getFragmentManager();      
      if (savedInstanceState != null) {         
          allFrg = (AllFragment) fManager.findFragmentByTag("allFrg");          
          oneFrg = (OneFragment) fManager.findFragmentByTag("oneFrg");          
          twoFrg = (TwoFragment) fManager.findFragmentByTag("twoFrg");                     
      }      
      super.onCreate(savedInstanceState);       
  }

如果上面的方法不能解决问题,尝试一下这个的方法,跳过保存Fragment的状态,代码如下:

  public void onSaveInstanceState(Bundle outState) {      
      // TODO Autogenerated method stub           
      //Log.v("LH", "onSaveInstanceState"+outState);      
      //super.onSaveInstanceState(outState);   //将这一行注释掉,阻止activity保存fragment的状态
  }

相关文章

  • Fragment叠影问题

    我们用add和hide方式来控制Fragment的切换经常会遇到这个坑--叠影。原因是在切换到其他app的时候,f...

  • 叠影

    1 “你知道吗?”丁斌一向这样,可以用一句话说完的事情非得分开说。他总能巧妙的搞出一种神秘的氛围,尽管他接下来说的...

  • 叠影

    最近S市笼罩在恐惧之中,恐怖分子不断犯下令人发指的恐怖袭击令人们生活在惶恐之中。 远处爆炸声再度响起的时候雷欧正穿...

  • 叠影.朝夕

    盼朝夕? 明月瞰花江, 春与韵同流, 琴音独去赏, 青莲亦水艳。

  • 青春叠影

    那个可以任意挥霍的年纪我们叫做“青春”。每个人都有美好的青春期,细细想来正处在青春里的我们又遇到那些值得回忆的...

  • 叠影婴儿

    不可辜负的寂静 春之花瓣落下 自然书写的笔触 大地祭献之礼乐 血脉涌动的身体 照料先辈的基因 混合着枯叶和落樱的雨...

  • 高空利剑_Android基础_fragment_四大组件_启动模

    Android基础 1.Fragment 问题1:Fragment是什么? Fragment是Android3.0...

  • Fragment的转场动画透明问题

    问题描述 activity中有多个fragment。fragment之间转场切换时,fragment是透明的。 解...

  • 2020-10-30 CoordinatorLayout下拉刷新

    问题现象: 使用CoordinatorLayout嵌套ViewPager再嵌套Fragment,Fragment里...

  • 五、Fragment详解

    1.生命周期 fragment是依附于activity存在的,所以fragment的生命周期受到activity影...

网友评论

    本文标题:Fragment叠影问题

    本文链接:https://www.haomeiwen.com/subject/rdqfjttx.html