【发布时间】:2018-03-10 13:39:07
【问题描述】:
我在我的活动中使用带有片段的底部导航。每个导航项都有四个片段。一切正常,除了一瞬间。在onCreate 中,我使用此代码在创建活动时加载第一个片段:
//Manually displaying the first fragment - one time only
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, MyCoursesFragment.newInstance("",""));
transaction.commit();
而我的 BottomNavigationListener 是:
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
selectedFragment = MyCoursesFragment.newInstance("","");
break;
case R.id.navigation_dashboard:
selectedFragment = CatalogFragment.newInstance("","");
break;
case R.id.navigation_notifications:
selectedFragment = MessagesFragment.newInstance("","");
break;
case R.id.my_people:
selectedFragment = MyPeopleFragment.newInstance("","");
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, selectedFragment);
transaction.commit();
return true;
}
};
所以,当我旋转手机并且屏幕方向改变时,我总是得到第一个片段(因为 onCreate 的第一段代码)。
没有它,我会在旋转后得到正确的片段,但第一次打开屏幕会是空的。
如何在旋转后获取正确的片段并在活动开始时加载第一个片段?
【问题讨论】:
标签: android android-fragments fragment