7 votes

Passage d'une activité à l'autre dans Android

Je débute sur Android et j'ai une question de débutant sur le basculement entre plusieurs activités.

Je comprends que je peux passer d'une activité à l'autre en invoquant une intention et en revenant avec setResult(). Ce que je veux savoir, c'est comment passer d'une activité à l'autre. Plus précisément, je veux en savoir plus sur le cycle de vie du processus. Je comprends que chaque activité est lancée par onCreated(), mais je ne sais pas comment mettre en œuvre onResume() ou onRestart() lorsque je veux revenir.

Donc, en gros, j'ai 3 activités : Activité1, Activité2 et Activité3.

Je commence par l'activité 1, puis j'invoque l'activité 2 avec une intention, et l'activité 2 invoque l'activité 3. En utilisant des boutons. Maintenant, je veux revenir à l'activité 1 depuis l'activité 3. Je fais la même chose ici aussi. Je crée un Intent et j'appelle startActivity(Activity1_Intent). Mais cela donne une erreur d'exécution.

Je pense que je dois implémenter OnResume() ou onRestart(), mais je ne sais pas comment faire. Dans onCreate() je crée un gridView, donc quand je reviens, est-ce que je dois créer ce gridView à nouveau ?

Si quelqu'un pouvait donner une petite explication ou renvoyer à un tutoriel, ce serait formidable. Merci beaucoup.

7voto

john 4d5 Points 731

Dans votre fichier manifeste, définissez Android:launchMode="singleTop" à votre Activité1.

Puis pour appeler votre Activity1 utilisez :

Intent intent = new Intent(this, Activity1 .class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

FLAG_ACTIVITY_CLEAR_TOP : S'il est défini et que l'activité en cours de lancement est déjà en cours d'exécution dans la tâche actuelle, au lieu de lancer une nouvelle instance de cette activité, toutes les autres activités situées au-dessus seront fermées et cette intention sera transmise à l'ancienne activité (maintenant au-dessus) comme une nouvelle intention.

FLAG_ACTIVITY_NEW_TASK : S'il est défini, cette activité deviendra le début d'une nouvelle tâche sur cette pile d'historique.

http://developer.Android.com/reference/Android/content/Intent.html

1voto

beLejer Points 163

Depuis Android 4.0, vous pouvez simplement définir dans le fichier Manifest Android:launchMode="singleTask" (mode de lancement) et il n'y a pas besoin d'écrire Java.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X