0
私は、自分のアクティビティでフラグメントを含むボトムナビゲーションを使用しています。私は、各ナビゲーションアイテムに対して4つのフラグメントを持っています。一瞬を除いて、すべてうまく動作します。アクティビティを作成するときonCreate
では、私は最初のフラグメントをロードするために、このコードを使用します。Android下部のナビゲーションフラグメントの問題
//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からの最初のコードのため)。
回転せずに右のフラグメントを取得しますが、最初のオープンでは画面が空になります。
ローテーション後に正しいフラグメントを取得する方法と、アクティビティの開始時に最初のフラグメントを読み込む方法はありますか?