当前位置: 首页 > 知识库问答 >
问题:

IllegalStateException:当前不在FragmentManager中

萧越泽
2023-03-14

我知道这听起来像是FragmentStatePagerAdapter IllegalStateException: 当前不在FragmentManager中,但他的解决方案与我的情况无关。

我很少遇到以下崩溃:

原因:java.lang.IllegalStateException:Fragment MyFragment{40648258 id=0x7f070051}当前不在Android.support.v4.app.fragmentManagerImpl.putFragment(MT:516)和Android.support.v4.app.fragmentStatePagerAdapter.savestate(MT:185)和Android.support.v4.view.viewPager.OnSaveInstanceState(MT:881)的FragmentManager中

...

在Android.view.view.saveHierarchyState(view.java:6238),在com.android.internal.policy.impl.phoneWindow.saveHierarchyState(phoneWindow.java:1522),在Android.app.activity.onsaveInstanceState(activity.java:1138),在Android.support.v4.app.fragmentActivity.onsaveInstanceState(mt:336)

这似乎是我无法从FragmentStatePagerAdapter中理解的奇怪代码:

for (int i=0; i<mFragments.size(); i++) {
    Fragment f = mFragments.get(i);
    if (f != null) {
        if (state == null) {
            state = new Bundle();
        }
        String key = "f" + i;
        mFragmentManager.putFragment(state, key, f);
    }
}

看起来适配器mfragments获取我的片段,但不能将其状态添加到fragmentManager

我找不到任何方法在我的测试设备上重新创建这个,只从一些用户那里收到了这个。

共有1个答案

左丘恩
2023-03-14

FragmentStatePagerAdapter是一段可怕的代码,充满了谷歌承认或不承认的bug,所以我使用这段代码来修复这个特定的崩溃:

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // Yet another bug in FragmentStatePagerAdapter that destroyItem is called on fragment that hasnt been added. Need to catch
        try {
            super.destroyItem(container, position, object);
        } catch (IllegalStateException ex) {
            ex.printStackTrace();
        }
    }
 类似资料:
  • 更新:当我把nullcheks(fragment!=null,getActivity()!=null)放到任何我能放的地方时,崩溃就消失了。 我的应用程序正在使用ViewPager(屏幕外限制5)和用getSupportFragmentManager()初始化的FragmentStatePagerAdapter。每一页都有它自己的片段和后栈。 应用程序在启动时崩溃。问题只发生在preLollipo

  • 我正在使用此代码来清理我的背包到我的主视图: 我很确定这段代码以前是有效的,但现在backstack计数没有改变,没有片段被删除,这会导致内存不足异常,因为while循环一直在运行。 有人知道它是否有问题,或者最新版本的SDK工具中是否有bug吗。我不知道是什么导致了这个问题。

  • 我在库伯内特斯(8-16个节点,自动缩放)上运行Kafka Connect。我总共定义了44个连接器,每个Kafka主题一个(每个主题一个分区)。这些主题是由Debezium/Postgreql生成的。有3个Kafka节点。每个连接器tasks.max设置为4。我的大多数连接器(但不是每个!)有一个(总是一个)失败任务,由于java.lang.IllegalStateExc的:分区-0没有当前分配

  • 问题内容: 这是我收到的错误消息: 这是我正在使用的代码: 我已经检查了寻找chromedriver的目录,并且目录在那里。我不确定这是什么问题。任何帮助将是巨大的! 编辑:这只是文件夹名称中的空格问题,但是现在我还有另一个问题。当我尝试启动chrome时,提示“管理员已在这台计算机上安装了chrome…。”我该怎么办? 问题答案: 您必须提供chromeDriver.exe文件路径,而不是从UR

  • 问题内容: 我正在使用Android兼容性库,偶尔会感到奇怪: 显然,我在做 一些 错误的操作,以允许它进入可能会像这样崩溃的状态,但是我不知道该怎么办。在相关的代码中没有提供我任何线索。我猜是某种在代码中的那一点?但这似乎是不可能的,因为该活动已经在屏幕上了,并且我没有在其中添加任何片段- 只需在中进行切换即可。 问题答案: 好的,在将我的头撞到砖墙上一段时间后,我发现这与我的片段的声明直接相关

  • 我的应用程序一直在许多Android平台上报告这个问题(4.1、4.0.4、2.3.6.…)。但我无法在我的手机上复制这个问题。我已经在Google上搜索了这个问题,但堆栈跟踪似乎与我的不一样。