setRetainInstance в NavigationDrawer
Я нашел много информации о методе setRetainInstance, но я хотел бы знать, как реализовать этот метод в Навигационном блоке действий?
У меня в основном есть:
- Активность, которая содержит...
- NavigationDrawerFragment, который содержит...
- TopLevelMapFragment (показывает Google Maps).
Моя цель - предотвратить перезагрузку всей карты и ее треков, когда пользователь поворачивает экран. Какова основная концепция setReepingInstance в деятельности в Навигаторе навигации? Нужно ли вызывать setReedingInstance (true) в NavigationDrawerFragment И TopLevelMapFragment?
1 ответ
Наконец-то я нашел решение своей проблемы: когда я создавал активность в Навигаторе, я опирался на стандартный шаблон Активности в Навигаторе ящиков в Android Studio. В этом шаблоне метод FragmentTransaction-replace вызывается каждый раз, когда пользователь щелкает элемент в окне навигации. Проблема: метод replace уничтожает все фрагменты, которые находятся в указанном контейнере. Поэтому, если вы хотите сохранить свои фрагменты, никогда не используйте метод замены. Вместо этого вы должны использовать методы add, show и hide. Кроме того, я вызываю метод setRetainInstance (true) в моем фрагменте Google Maps, чтобы фрагмент оставался активным, например, когда пользователь поворачивает экран.