Aller au contenu

Palier au rechargement de l'activity quand changement d'orientation


MzelleNeskimo

Recommended Posts

Bonjour à vous tous

J'ai pas mal cherché la réponse à mon problème sur internet.

J'ai fini par trouver, heureusement. Mais pour éviter à d'autre, peut être, de se retrouver devant le même problème, voici la démarche que j'ai adopté.

Le problème globalement était qu'à chaque changement d'orientation, l'activity était détruite et recréée. Pas très pratique donc de perdre du temps pour recalculer tout un tas de variable (dans mon cas il fallait les récupérer sur un webservice donc plus long qu'un simple calcul). Malgré tout, je ne voulais pas bloquer l'orientation, à chacun son choix de visualisation!

Du coup je me suis servie des méthodes onSaveInstanceState et onRestoreInstanceState.

La première est appelée avant la destruction de l'activity. Elle permet de sauvegarder l'instance, et donc d'y garder les valeurs souhaités.

@Override

public void onSaveInstanceState(Bundle savedInstanceState) {

savedInstanceState.putString("maValeur", "Me perd pas!");

// reste des sauvegardes

super.onSaveInstanceState(savedInstanceState);

}

Quand onDestroy est appellé, les valeurs sont sauvegardés.

Démarre alors la nouvelle activity.

Pour récupérer les valeurs on fait donc appel à onRestoreInstanceState qui est appellé lui mêmeaprès onCreate, il faut donc en tenir compte.

private String maChaine;

@Override

public void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

maChaine = savedInstanceState.getString("maValeur"));

// reste des récupérations

}

Voilà, la nouvelle activity a récupéré les valeurs de l'ancienne.

Il suffit donc de différencier le traitement en fonction du cas ou l'on se trouve pour éviter de lancer inutilement tout le processus de calcul.

En espérant que cela puisse aider quelqu'un dans le futur et que je n'ai pas l'air trop bête de poster ça :P ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...