2010-12-15 83 views
0

Quelqu'un peut-il me dire s'il existe un moyen d'ajouter l'activité actuelle à Activity Stack (Historique des activités). Je situation suivante:Comment ajouter l'activité actuelle à Activity Stack

  1. utilisateur démarre une nouvelle activité - A (que je ne veux pas mettre sur la pile)
  2. utilisateur démarre une nouvelle activité (B) d'un utilisateur
  3. appuie sur le bouton RETOUR de B
  4. B est parti, mais est allé aussi

, je veux Lorsque l'utilisateur commence l'activité B de garder une histoire de pouvoir revenir en arrière avec le bouton bACK.

La seule chose que j'ai en tête est de commencer une nouvelle activité A à partir de B dans la méthode onKeyDown(). Mais peut-être y a-t-il un meilleur moyen?

+0

Si vous voulez vous rafraîchir l'activité « A » lorsqu'il est appelé à partir de B puis utilisez onActivityResult pour rafraîchir – Eby

Répondre

0

set android: clearTaskOnLaunch = « true » dans l'activité de votre racine (dans le fichier manifeste)

aussi, à moins que vous voulez éviter d'aller de B à A (lorsque le dossier de presse de l'utilisateur), vous devez laisser tomber le « pas historique » drapeau

docs:

Si cet attribut est réglé sur « true » dans l'activité de la racine d'une tâche, la pile est coupée à l'activité racine à chaque fois que l'utilisateur quitte la tâche et retourne à il. En d'autres termes, c'est l'opposé de alwaysRetainTaskState. L'utilisateur retourne toujours à la tâche dans son état initial, même après une absence momentanée

http://developer.android.com/guide/topics/fundamentals.html#clearstack http://developer.android.com/guide/topics/manifest/activity-element.html#clear

+0

Ce serait génial si cela a fonctionné. Le problème est que ce n'est pas le cas. Dans une autre question quelqu'un a dit que le bouton HOME ne termine pas l'activité de la racine, donc il ne peut pas être relancé .. – Seraphis

+0

Peut-être que j'ajoute que l'activité A est démarrée à partir de mon widget. Vous ne savez pas si cela change quoi que ce soit – Seraphis

+0

avez défini une tâche claire lors du lancement de l'activité A * et * avez-vous supprimé le drapeau sans historique? comment ça c'est passé? –

1

Si vous n'appelez finish() pour l'activité A lorsque l'utilisateur commence l'activité B sera là lorsque l'utilisateur termine l'activité B.

+0

si Je commence l'activité A avec le drapeau Intent.Activity_flag_no_history, alors ce n'est pas le cas. C'est le problème. – Seraphis

1

C'est en fait ce qui se passe dans le cycle de vie normal d'une application. Si vous n'appelez pas finish() dans A, l'application retournera à A lorsque B aura terminé.

+0

Comme je l'ai écrit dans le commentaire ci-dessous: il ne sera pas avec le drapeau no_history ... – Seraphis

+1

Pourquoi exactement devez-vous utiliser ce drapeau, si vous voulez revenir à votre application? S'il vous plaît expliquer un peu plus pourquoi vous avez dû mettre ce drapeau, cela nous aiderait à vous répondre. –

+0

Parce que je veux éviter une situation comme: l'utilisateur démarre l'activité A -> l'utilisateur démarre l'activité B de A -> l'utilisateur appuie sur le bouton HOME -> l'utilisateur démarre l'activité A, mais il se déplace directement vers B – Seraphis