Sujet: Problème avec finishActivity()

Bonjour à tous, après plusieurs recherche je n'arrive toujours pas à comprendre comment marche le startActivityForResult puis finishActivity().

J'ai lancé une activité B depuis A avec startActivityForResult(1) puis j'ai lancé une activité C depuis B avec startActivityForResult(1) et dans C je voudrait fermer A et B donc j'ai fait un finishActivity(1); mais rien ne se passe les activité A et B ne sont pas fermé, j'ai essayer avec 0 et -1 car j'ai vu qu'il pouvait y avoir des changements en fonction de la valeur du nombre mais je n'ai pas bien compris comment celà fonctionne.

Est-ce que quelqu'un pourrait m'aider à comprendre, j'ai lu un truc sur des onRestart ou un truc comme sa mais j'ai pas compris du tout ???

Merci d'avance pour vos réponse !!!

Bonne journée

2

Re: Problème avec finishActivity()

Utilise finish() dans C pour revenir dans B puis dans onActivityResult() dans B rapelle finish() et le tour est joué wink

3

Re: Problème avec finishActivity()

Bonjour Viish et merci pour votre réponse,

Effectivement celà fonctionne, merci beaucoup.

Juste pour savoir pour dire de fermer le programme existe-t-il une instruction autre que de devoir faire des finish() sur toute les activité ?

Bonne fin de journée.

Modifié pour la dernière fois par Zeph (22/12/2009 13:55:32)

4

Re: Problème avec finishActivity()

Oui, tu fais un system.exit(0);
Ça tuera purement et simplement l'application.

5

Re: Problème avec finishActivity()

A effectivement t j'y ai même pas pensé, merci !!!

Par contre moi sa me fait comme finish() sa ne m'arrete que l'activité sur laquelle je suis !!!

Bonne journée

Modifié pour la dernière fois par Zeph (22/12/2009 14:47:55)

6

Re: Problème avec finishActivity()

Re bonjour, finalement je vais quand meme avoir besoin du startActivityForResult puis finishActivity() car mon exemple n'était pas bon.

En faite :
Je lance une activité B depuis A  puis je lance une activité C depuis B enfin je lance une activité D depuis C. Si je fait finish() sur C je veut que B se termine et que A se termine (jusque là ce que vous m'avez expliqué plus haut fonctionne) mais si je finish() depuis D je veut que C et B se termine mais pas A (car si j'utilise ce que vous m'avez expliqué A se terminera aussi).

Apparemment il faut utiliser startActivityForResult puis finishActivity() mais je n'arrive pas à l'utiliser correctement, pouvez vous m'aider svp ?

Pour résumer je voudrais pouvoir dire, telle activité tu te finish() mais depuis une autre activité !!!

Merci

Modifié pour la dernière fois par Zeph (23/12/2009 01:03:43)

7

Re: Problème avec finishActivity()

Bonjour à tous, je suis dans la même situation que Zeph.
Mais la solution dite ici ne me convient pas.
En effet dans mon application j'ai une ListActivity qui peut lancer soit une activité A ou  B.
Les deux activité me servent à faire des calculs sous forme de formulaire. Or l'activité A a besoin de B pour completer ses calcul, donc je lance l'activité B.
Dans la solution que vous donnez je suis obligé de "finish()" B pour revenir à A avec le resultat.
Mais j'aimerais qu'on puisse lancer B sans passer par A, donc qu'àprès les calcul, si B n'a pas été appelé par A, qu'il ne "finish()" pas.

8

Re: Problème avec finishActivity()

Hello je ne sais pas si j'ai bien compris le problème mais si A  a lancer B, il est possible de revenir sur A sans quitter B et sans recréer une nouvelle activité A depuis B. Il suffit d'écrire le code ci dessous dans B. Celui-ci va : si A existe déjà, la faire revenir au premier plan, et si A n'existe pas le start activity va créer une nouvelle activité A.
Dans votre cas comme A existe déjà elle va faire revenir A au premier plan.

Intent defineIntent = new Intent(this, A.class);
defineIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(defineIntent);

voilà j'espère avoir répondu a ta question !!!

Bonne journée

Modifié pour la dernière fois par Zeph (24/12/2009 11:30:32)

9

Re: Problème avec finishActivity()

Bonjour, finalement je vais quand meme avoir besoin du startActivityForResult puis finishActivity() car mon exemple n'était pas bon.

En faite :
Je lance une activité B depuis A  puis je lance une activité C depuis B enfin je lance une activité D depuis C. Si je fait finish() sur C je veut que B se termine et que A se termine (jusque là ce que vous m'avez expliqué plus haut fonctionne) mais si je finish() depuis D je veut que C et B se termine mais pas A (car si j'utilise ce que vous m'avez expliqué A se terminera aussi).

Apparemment il faut utiliser startActivityForResult puis finishActivity() mais je n'arrive pas à l'utiliser correctement, pouvez vous m'aider svp ?

Pour résumer je voudrais pouvoir dire, telle activité tu te finish() mais depuis une autre activité !!!

Merci