1

我有一个Fragment,我们称它为...F1包含一个Fragment F2; 其中又包含一个Fragment F3.

当我启动我的应用程序时,我收到此错误:

IllegalStateException: Activity has been destroyed

它指的是这行代码:

        getChildFragmentManager().beginTransaction().add(R.id.fragmentcontainer, fragment_profile_list.newInstance()).commit();

我的小学上层fragmentcontainer里的a在哪里。放在's内的位置。FrameLayoutFragment F1F2F1fragmentcontainer

关于如何解决这个问题的任何想法;我尝试进行搜索,其他结果说要硬编码一个Fragment字段并立即分配它,但这也没有解决问题。

4

1 回答 1

1

您可以在添加 F3 之前转储 F2 的内部状态。如果您看到 mActivity != null 就可以了。否则你会得到异常。

dump("", null,  new PrintWriter(System.out, true), null);

我不确定是什么让 mActivity = null 在你的情况下。在我的例子中,我在附加片段之前过早地调用了片段的 getChildFragmentManger(当 mActivity = null 时)。第一次调用时,getChildFragmentManager 在内部为该片段初始化 mChildFragmentManager。结果,我最终得到了一个带有 null mActivity 的 mChildFragmentManager。后来当我尝试使用它添加子片段时,我得到了“活动已被破坏”异常。

于 2014-05-07T11:08:30.507 回答