У меня есть фрагмент, который добавляется программно. Однако я обнаружил, что после вращения создается новый фрагмент, но старый фрагмент все еще жив (хотя и не отображается). Я предположил, что фрагменты уничтожаются вместе с активностью при вращении, но здесь это не так. Что может привести к тому, что мой фрагмент будет сохранен/не уничтожен? Обращаем ваше внимание:Фрагмент не разрушен при вращении
- Я не устанавливаю setRetainInstance.
- фрагмент не добавляются в деятельности OnCreate (добавлено позже, когда кнопка касания)
- Я могу видеть OnDestroy вызывается для деятельности при вращении
- Хотя фрагмент добавляется, он затемняет кнопку добавления и его увольняют только после того, как я удалю его.
Код создания фрагмента:
MyFragment fragment = MyFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.content_frame, fragment, "CurrentFragment");
fragmentTransaction.show(fragment).commit();
код удаления фрагмента:
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.remove(fragment).commit();
UPDATE: Я не могу подтвердить, что это была проблема, но регистры фрагмента в качестве приемника LocalBroadcast в onCreate. Он незарегистрирован для трансляций в onDestroy, но кажется, что либо регистрация LocalBroadcast препятствовала вызову onDestroy, либо onDestroy не вызывался при ротации. Теперь я отменил регистрацию на onStop, и это, похоже, решило проблему.
Хорошо, когда вы вращаете свое устройство, отображается ли этот фрагмент? Тот, который был добавлен нажатием кнопки? –
@ M-WaJeEh Да, вновь созданный фрагмент показан – RunLoop