在我的MainActivity中,我有三个片段。还有一个BottomNavigationView处理要显示的片段。
这是我在MainActivity的OnCreate中拥有的内容:
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;
如何解决此问题?
答案 0 :(得分:3)
重新创建活动时,片段会自动恢复。因此,在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();
}