我有一个Fragment,我们称它为F1包含Fragment F2;依次包含Fragment F3

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

IllegalStateException: Activity has been destroyed


指的是这一行代码:

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


其中fragmentcontainer是我的主要上级FrameLayout Fragment中的F1F2放在F1fragmentcontainer中的位置。

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

最佳答案

您可以在添加F3之前转储F2的内部状态。如果看到mActivity!= null,那就没问题了。否则,您将获得例外。

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


我不确定在您的情况下是什么使mActivity = null。就我而言,我在连接片段之前调用片段的getChildFragmentManger太早(当mActivity = null时)。
首次调用时,getChildFragmentManager在内部为片段初始化mChildFragmentManager。结果,我最终得到了一个mChildFragmentManager,其mActivity为空。后来,当我尝试使用它添加子片段时,出现了“活动已被破坏”异常。

关于android - IllegalStateException Activity 已被破坏-三重 fragment ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23191949/

10-08 23:34