J'ai un tiroir de navigation dans l'activité principale de mon application. Sur la méthode onCreate de l'activité I initialise un des fragments comme celui-ci:Android Navigation Drawer mauvais titre de la barre d'outils onResume
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
MenuItem menuItem = navigationView.getMenu().findItem(R.id.menu_history);
openFragment(menuItem);
}
public void openFragment(MenuItem menuItem){
Fragment newFragment = null;
switch (menuItem.getItemId()){
case R.id.menu_history :
newFragment = new HistoryFragment();
break;
//.....
}
if (newFragment != null){
//Replace content frame in activity_main.xml with newFragment
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, newFragment)
.commit();
menuItem.setChecked(true);
getSupportActionBar().setTitle(menuItem.getTitle());
}
drawerLayout.closeDrawers();
}
Tout cela fonctionne bien, le fragment apparaît au démarrage avec le titre de la barre d'outils étant « Histoire ». Mais lorsque l'application passe à onPause, puis à OnResume, le titre de la barre d'outils passe de "Historique" au nom de l'application. Je soupçonne que c'est un problème avec onResume ne pas ouvrir le fragment/retour à son état précédent correctement, parce que quand j'ai ajouté les lignes suivantes à onResume la question est arrêté:
@Override
protected void onResume() {
super.onResume();
MenuItem menuItem = navigationView.getMenu().findItem(R.id.menu_history);
openFragment(menuItem);
}
Cette solution semble fixer, mais cela signifie qu'il doit recharger le fragment avec les animations chaque fois que l'application est reprise, ce qui n'est pas optimal. Des idées pour résoudre le problème? Si cela aide, pour recréer le problème que j'ai trouvé utile de faire l'écran partagé de l'application, car il appelle toujours onResume. Merci.