zoukankan      html  css  js  c++  java
  • <转> 解决异常:IllegalStateException: Fragment <ThisFragment> is not currently in the FragmentManager

    上午敲代码时出现这个问题,简单记录一下解决办法,有时间详细描述一下深层原因。 
    问题出现在这:

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        getSupportFragmentManager().putFragment(outState, "mContent", mContent); 
    }
     

    网上查看了一下,只需修改为如下:

    @Override 
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (mFragment.isAdded()){
            getSupportFragmentManager().putFragment(outState, "mFragment", mFragment); 
        }
    } 

     当我们的应用(即管理多个Fragment的Activity)运行到后台时(即退出当前屏幕),会触发Activity的onPause()方法,而Activity的onPause()会调用它所管理的Fragment的同样的方法,但是当我使用replace时,已经remove掉了原来的Fragment,所以当调用原理的Fragment的onPause()方法就回不存在,就会出现上述xxx is not currently in the FragmentManager的异常推出

    以上代码

    意思是:在onSaveInstanceState(Bundle outState)方法中保存fragment时,要先确保fragment是否已经加入到fragment manager中。

  • 相关阅读:
    python之路-day31-守护进程、锁、队列、生产者消费者模型
    python之路-day30-进程
    python之路-day26 初探网络编程
    python之路-day25-包
    python之路-day21-模块介绍1
    python之路-day19-面向对象之约束
    递归格式模板
    java创建一个窗体
    异常throws关键字 异常throw关键字
    多个catch块
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/4552679.html
Copyright © 2011-2022 走看看