2010-01-20 3 views
1

J'ai les éléments suivants:Android: Manipulation de la pile d'activités

Activités A, B, C, D. A et D peut être atteint à tout moment, n'importe où dans l'application.

B et C sont atteintes comme ceci:

A -> B -> C 

je le cas d'utilisation suivante:

L'utilisateur est entré C (A -> B -> C), puis elle est allée à D.

Quand elle veut aller à A, je veux la transférer à la file d'attente déjà commencée de A - en d'autres termes je veux qu'elle aille au C commencé.

Quelque chose comme ceci A -> B -> C -> D -> (same) C. Mais je ne veux pas perdre D de la pile d'activité. Après cela, quand elle appuie sur le bouton "retour", elle est de nouveau transférée au D.

Est-ce possible et correct à faire? Quelle est la meilleure pratique?

Si je n'ai pas expliqué ma situation assez clairement, n'hésitez pas à poser des questions.
10x à l'avance,
Danail

Répondre

3

Malheureusement, vous ne pouvez pas le faire. The documentation says the following:

Notez que lorsqu'une nouvelle instance d'une activité est créée pour gérer une nouvelle intention, l'utilisateur peut toujours appuyer sur la touche BACK pour revenir à l'état précédent (à l'activité précédente). Mais lorsqu'une instance existante d'une activité gère une nouvelle intention, l'utilisateur ne peut pas appuyer sur la touche RETOUR pour revenir à ce que cette instance faisait avant que la nouvelle intention n'arrive.

Fondamentalement, vous ne pouvez pas avoir la même instance de l'activité C à deux endroits de la pile en même temps. Cependant, vous pourriez faire croire que c'était le cas en faisant en sorte que l'activité C enregistre son état transitoire au Application object pour votre application. Cela permettrait à toutes les instances de l'activité C de partager l'état et ainsi apparaître comme si elles étaient la même instance.

Vous devez créer votre propre sous-classe Application, puis lire et écrire à partir de l'activité C au onResume() et onPause().

+0

10x! Je vais essayer ça. – Danail

+0

En fait, l'affichage d'une autre juste cette réponse, il y a une façon de le faire: « Vous pouvez essayer cette FLAG_ACTIVITY_REORDER_TO_FRONT (le document décrit exactement ce que vous voulez) http://developer.android.com/reference/ android/content/Intent.html # FLAG_ACTIVITY_REORDER_TO_FRONT " – Danail

+0

@Danail - Cela ne fait pas tout à fait ce que vous vouliez. Il changera l'ordre en 'A -> B -> D -> C', ce qui signifie que le retour de l'activité D amènera l'utilisateur à' B'. (Je pense donc à la lecture de la documentation de toute façon, je ne l'ai pas essayé.) –

Questions connexes