Tutoriel [TUTO] Revenir à l'activité principale

  • Auteur de la discussion arkerone
  • Date de début
A

arkerone

Membre
Inscrit
18 Juin 2011
Messages
18
Points
0
  • #1
Bon voilà, comme promis je vous fais un petit tuto pour vous apprendre à revenir à l'activité principale d'une application à partir des autres activités ;) .
Bon avant de commencer on va prendre un exemple, imaginons que l'on ait une application avec une barre d'action en haut avec un bouton "home" qui permet de revenir au menu principal de l'application. L'application se compose de plusieurs activités ( ou de fenêtre si vous préférez) , imaginons que l'on ouvre une première activité (on va l'appelée l'activité 1... oui très original :D ) à partir du menu principal, puis une seconde activité à partir de l'activité 1 (on l'appellera...devinez... roulements de tambour... l'activité 2 :cool: ) et imaginons maintenant que l'on souhaite revenir à notre activité principale à partir de l'activité 2. Vous allez me dire on a qu'a lancer à partir de l'activité 2 l'activité principale... c'est mal!!! :twisted:
En effet, si vous faite cela vous n'aura pas 3 activités lancées mais 4 :

Activité principale -> Activité 1 -> Activité 2 -> Activité principale

Il y aura donc une nouvelle activité principale de lancé. Le mieux serait de pouvoir revenir à la "vraie" activité principale sans passer par l'activité 2... mais comment faire...? Débrouillez vous :twisted: non je plaisante je vais vous expliquer ma méthode.

Bon tout d'abord, créons notre activité principale avec un bouton permettant d'ouvrir la première activité (vous trouverez le projet à la fin du tutorial) et ajoutons une action au bouton c'est à dire ouvrir l'activité 1:

Code:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

Bon jusqu'ici rien de compliqué. Maintenant intéressons nous à l'activité 1. Nous allons ouvrir à partir de l'activité 1 la deuxième activité mais nous allons également nous intéresser au résultat de l'activité 2 lorsque celle-ci se termine pour cela nous allons lancer l'activité 2 avec la méthode startActivityForResult() et récupérer le code de retour de l'activité 2 avec la méthode onActivityResult(). Tout d'abord lançons l'activité 2 lorsque l'on clique sur le bouton :

Code:
S'il vous plaît, Connexion ou S'inscrire to view codes content!
Nous avons donc lancer l'activité 2 et nous lui donnons comme numéro 1000. Ensuite voyons comment récupérez le résultat de l'activité 2 lorsque celle-ci se termine :

Code:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

Donc lorsque que l'activité 2 c'est à dire 1000 est terminé et si son code de retour est 1 on ferme l'activité 1 et on se retrouve donc à l'activité principale :D. Bien entendu vous pouvez récupérer des données provenant de l'activité 2 dans l'activité 1 grâce au paramètre "data" et des méthodes getIntExtra() , getDoubleExtra() etc...

J'espère que vous avez compris tout cela, maintenant voyons l'activité . Il suffit, lorsque l'on clique sur le bouton de fermer l'activité 2 et de mettre le résultat de retour comme ceci :

Code:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

Et vous vous retrouverez à l'activité principale :D !!! J'espère que vous avez compris ;)

CODE SOURCE



PS : désolé pour les fautes d'orthographes j'ai un peu la tête dans le c** vive les lendemains de soirées :lol:
 
A

Anonymous

  • #2
super :D

ça pourra me servir :D

merci :D
 
A

arkerone

Membre
Inscrit
18 Juin 2011
Messages
18
Points
0
  • #3
De rien ;)
 
A

Antoine Weber

Membre
Inscrit
25 Août 2011
Messages
3
Points
0
  • #4
Salut,

Je viens de lire ton tuto est j'aurais une question,
je souhaiterais utiliser le même principe de retour mais pour une application dont la hiérarchie est plus complexe.
Imaginons que l'on ai Activity 1 -> 2 -> 3 -> 4 -> 5 ...
et que dans la derniere on veuille retourner à la premiere.
En utilisant cette méthode on aura des Intent envoyés pour chacune des pages de l'arborescence,
n'y a-t'il pas alors un risque que cet appel prenne beaucoup de temps à l'affichage?
Ne pourrait-on pas appeler une fonction qui fermerais toutes la stack d'activité? pour ainsi obtenir uniquement l'activité à l'origine de l'appel?
 
A

arkerone

Membre
Inscrit
18 Juin 2011
Messages
18
Points
0
  • #5
Le principe est exactement le même que pour 3 activités par contre il faut en effet éviter d'ouvrir trop d'activité surtout si celle-ci ont un traitement lourd a effectuer.
 
julien.dumortier

julien.dumortier

Membre
Inscrit
18 Juin 2013
Messages
9
Points
1
  • #6
Bon tutoriel, il est aussi possible d'utiliser un code comme celui-ci:

Code:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

le drapeau FLAG_ACTIVITY_CLEAR_TOP à pour effet de vider la pile des activités lancées.

Il est aussi possible de définir l'attribut suivant dans le manifest, dans l'activité principale:

android:clearTaskOnLaunch="true"

voilà !
 
Z

zem

Membre
Inscrit
16 Mai 2014
Messages
1
Points
0
  • #7
Bonjour Arkerone,

Merci pour ce tutoriel.
Est-ce que c'est encore possible d'avoir le code source ? Le lien ne fonctionne plus.

merci.
 
J

JSevenOne

Membre
Inscrit
13 Janvier 2015
Messages
1
Points
1
  • #8
Bonjour Arkerone,

Je suis débutant dans le developpement Android, et j'ai quelque lacune... J'ai vraiment avoir le code source88 Mais le lien semble ne pas fonctionner!

merci.
 

Sujets en relation

Haut Bas