Фрагмент Android ставится поверх предыдущего при возвращении из фона - PullRequest
0 голосов
/ 27 июня 2019

В моей MainActivity у меня есть три фрагмента.Существует также BottomNavigationView, который обрабатывает, какой фрагмент показывать.

Это то, что у меня есть в OnCreate моей MainActivity:

   fragmentManager.beginTransaction().add(R.id.content_main, mTrendingFragment, "3").hide(mTrendingFragment).commit();
   fragmentManager.beginTransaction().add(R.id.content_main, mFavoriteFragment, "2").hide(mFavoriteFragment).commit();
   fragmentManager.beginTransaction().add(R.id.content_main, mUpcomingViewPagerFragment, "1").commit();

Теперь, к сожалению, когда я возвращаюсь к своему приложению из фона, эти 3 фрагмента помещаются поверх старых иэто создает странное поведение, которое сбивает UI

. Вот как я показываю свой фрагмент, когда нажимаю на элемент BottomNavigationView:

fragmentManager.beginTransaction().hide(mCurrentFragment).show(mUpcomingViewPagerFragment).commit();
mCurrentFragment = mUpcomingViewPagerFragment; 

Как я могу исправить это поведение?

1 Ответ

3 голосов
/ 27 июня 2019

Фрагменты автоматически восстанавливаются при воссоздании вашей активности. Поэтому любые настройки, которые вы выполняете в onCreate(), должны быть защищены проверкой if (savedInstanceState == null), чтобы гарантировать, что вы не добавите дополнительные фрагменты поверх уже восстановленных.

if (savedInstanceState == null) {
    fragmentManager.beginTransaction().add(R.id.content_main, mTrendingFragment, "3").hide(mTrendingFragment).commit();
    fragmentManager.beginTransaction().add(R.id.content_main, mFavoriteFragment, "2").hide(mFavoriteFragment).commit();
    fragmentManager.beginTransaction().add(R.id.content_main, mUpcomingViewPagerFragment, "1").commit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...