При вращении экрана отображается мой вложенный фрагмент, но в течение нескольких коротких моментов также отображается родительский фрагмент.Показать вложенные фрагменты на экране вращения без отображения родительского фрагмента
У меня есть моя основная функция, которая имеет FrameLayout
с ID activity_base_container
.
Я делаю это, когда начинается моя деятельность:
Fragment initialFragment = getInitialFragment();
mFragmentManager.beginTransaction()
.add(R.id.activity_base_container, initialFragment, initialFragment.getClass().getSimpleName())
.commit();
Это initialFragment
начальный фрагмент отвечает проверить некоторые условия и в зависимости от них будет запущен один из двух возможных фрагментов:
fragmentManager.beginTransaction().replace(R.id.activity_base_container, fragment, fragment.getClass().getSimpleName()).commit();
Lets предположим, что он запускает FragmentF
(с корнем FrameLayout
с идентификатором fragment_f_root
). Этот макет фрагментов имеет набор параметров. Когда пользователь нажимает одну из этих опций, соответствующий фрагмент создается и запускается так:
//The example here is an option that displays a google map.
fragment = FragmentMapMultipleActivity.newInstance();
fragmentManager.beginTransaction()
.replace(R.id.fragment_f_root, fragment)
.addToBackStack(fragment.getClass().getSimpleName())
.commit();
На данный момент все работает, как ожидалось. Проблема в том, что я поворачиваю экран. FragmentF
появляется кратко, а затем сразу появляется FragmentMapMultipleActivity
, вложенный фрагмент.
Возможно ли после поворота экрана показать только вложенный фрагмент, или я должен изменить свою «архитектуру» на что-то еще?
просто мысль: в 'FragmentF' вы должны использовать' getChildFragmentManager() 'вместо« обычного ». Кроме того, убедитесь, что вы _really_ хотите сделать 'addToBackStack' для вложенного фрагмента.Чтобы показать только вложенный фрагмент в ландшафте, я бы создал специальный макет для пейзажа, где 'R.id.fragment_f_root' занимает весь экран (или просто расширяйте его после изменения ориентации). Хотя, я не уверен, что он отвечает на ваш вопрос –
@KonstantinLoginov Спасибо. В 'FragmentF' я использую' getChildFragmentManager() '. Из моего исследования я думаю, что я изменю свою реализацию, поэтому я не использую вложенные фрагменты – Favolas
По моему скромному мнению, я едва могу придумать какие-либо хорошие аргументы, чтобы использовать вложенные фрагменты где-нибудь, кроме «ViewPager». Пользовательские виды уменьшают сложность здесь и обеспечивают более предсказуемый жизненный цикл. –