IllegalStateException Деятельность была уничтожена - тройные вложенные фрагменты
У меня есть 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
F1
, куда 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. Позже, когда я попытался использовать его для добавления дочернего фрагмента, я получил исключение "Деятельность была уничтожена".