Вы по-прежнему безоговорочно создаете новые экземпляры в onCreate (), когда делаете:
// Default fragment
mUpcomingViewPagerFragment = new UpcomingViewPagerFragment();
mFavoriteFragment = new FavoriteFragment();
mTrendingFragment = new TrendingFragment();
Когда вы восстанавливаете свой экземпляр (и savedInstanceState
равно , а не равноnull
), вы никогда не добавляете эти совершенно новые фрагменты в FragmentManager, поэтому вызов hide()
, show()
и т. Д. С этими фрагментами ничего не делает.
Вместо этого вам нужно извлечь эти фрагменты из FragmentManagerтак что ваши переменные экземпляра соответствуют фрагментам, о которых знает FragmentManager:
if (savedInstanceState == null) {
// Create brand new Fragments
mUpcomingViewPagerFragment = new UpcomingViewPagerFragment();
mFavoriteFragment = new FavoriteFragment();
mTrendingFragment = new TrendingFragment();
// Add the brand new Fragments to the FragmentManager
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();
} else {
// Retrieve the already existing Fragments from the FragmentManager
mUpcomingViewPagerFragment = (UpcomingViewPagerFragment) fragmentManager.findFragmentByTag("1");
mFavoriteFragment = (FavoriteFragment) fragmentManager.findFragmentByTag("2");
mTrendingFragment = (TrendingFragment) fragmentManager.findFragmentByTag("3");
}