IllegalStateException Деятельность была уничтожена - тройные вложенные фрагменты

У меня есть Fragmentдавайте назовем это... F1 содержащий FragmentF2; который в свою очередь содержит FragmentF3,

Когда я запускаю свое приложение, я получаю эту ошибку:

IllegalStateException: Activity has been destroyed

который относится к этой строке кода:

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

куда fragmentcontainer это FrameLayout в моем начальном верхнем уровне FragmentF1, куда F2 находится внутри F1"s fragmentcontainer,

Любые идеи о том, как решить эту проблему; Я попытался сделать поиск, и другие результаты сказали, чтобы жестко Fragment поле и выделить его немедленно, но это также не решило проблему.

1 ответ

Вы можете сбросить внутреннее состояние F2 перед добавлением F3. Если вы видите mActivity!= Ноль, все будет хорошо. В противном случае вы получите исключение.

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

Я не уверен, что сделал mActivity = null в вашем случае. В моем случае я вызвал getChildFragmentManger фрагмента слишком рано, прежде чем фрагмент был прикреплен (когда mActivity = null). Когда он вызывается впервые, getChildFragmentManager внутренне инициализирует mChildFragmentManager для фрагмента. В результате я получил mChildFragmentManager с нулевой mActivity. Позже, когда я попытался использовать его для добавления дочернего фрагмента, я получил исключение "Деятельность была уничтожена".