J'essaie de résoudre le problème du redémarrage de l'activité en cas de changement d'orientation.
J'ai un ActionBar
avec une liste de navigation déroulante et après chaque rotation, le premier élément de cette liste est activé. Garder fragment
Le contenu n'était pas difficile, mais je ne sais pas comment définir l'élément de liste actif.
Voici la définition de ActionBar
:
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<CharSequence> list = ArrayAdapter
.createFromResource(this, R.array.action_list, android.R.layout.simple_dropdown_item_1line);
list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActionBar().setListNavigationCallbacks(list, this);
Et voici ma solution de rechange :
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if (!application.isRotated) {
application.activePosition = itemPosition;
application.activeId = itemId;
getFragmentManager().beginTransaction()
.replace(android.R.id.content, MyFragment.newInstance(itemPosition))
.commit();
} else {
application.isRotated = false;
this.onNavigationItemSelected(application.activePosition, application.activeId);
}
return true;
}
@Override
protected void onStop() {
super.onStop();
application.isRotated = true;
}
Mais je ne suis pas sûr que ce soit la meilleure solution.