2017-09-28 6 views
0

J'utilise la navigation du bas avec des fragments dans mon activité. J'ai quatre fragments pour chaque élément de navigation. Tout fonctionne bien, sauf un moment. En onCreate i utiliser ce code pour charger premier fragment lorsque l'activité a créé:Numéro de fragments de navigation du bas Android

//Manually displaying the first fragment - one time only 

     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
      transaction.replace(R.id.frame_layout, MyCoursesFragment.newInstance("","")); 
      transaction.commit(); 

Et mon BottomNavigationListener est:

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; 
    } 

}; 

Alors, quand je Basculez le téléphone et les changements d'orientation de l'écran, je reçois toujours premier fragment (à cause du premier morceau de code d'onCreate). Sans cela, j'obtiendrai le bon fragment après la rotation, mais à la première ouverture, l'écran sera vide.

Comment obtenir le bon fragment après rotation et aussi charger le premier fragment quand l'activité commence?

Répondre

1
Activity is recreated after each rotation by default. 

Vous pouvez modifier ce comportement avec l'attribut configChanges de la balise d'activité dans AndroidManifest.

android:configChanges="orientation|screenSize" 

Handling Configuration Changes