2010-10-03 4 views
2

J'ai un assistant de réservation dans android, quand je dis assistant, j'ai plusieurs activités (c'est-à-dire des écrans) qui sont transmises de l'une à l'autre jusqu'à la fin de la réservation. à chaque étape de la façon dont mes informations peuvent être invalides et si mal à suivre les activités 2-3 et recommencer, toutes les activités que j'ai suivies doivent être détruites, elles peuvent avoir besoin d'invalider un conteneur de données singleton qu'elles ont rempli leurs données. Je pensais que 2 façons de le faire:Meilleur moyen de mettre fin à un assistant dans android

  1. début toutes les activités liées à l'assistant avec startActivityForResult() si je reçois une notification lorsqu'une activité est terminée et avec quel code d'erreur (terminée OK ou erreur) et agir en conséquence (par exemple: si au milieu une activité échoue, elle échouera et la précédente retournera échouée aussi jusqu'à ce que j'arrive à la première activité de l'assistant où je déclare l'erreur avec une boîte de dialogue ou affiche l'écran de remerciement.
  2. Je peux envoyer une réaction sur les intentions avec certains paramètres afin que j'ai un message d'intention «fermer et nettoyer» qui ferme l'activité précédente etc ...

quelle est la meilleure façon, tout autre moyen intéressant \ efficace de le faire?

+0

Et si vous savez seulement si un écran précédent est invalide après l'avoir quitté, faites-en une erreur sur l'activité qui le réalise. Ils peuvent soit le corriger sur cette activité ou cliquer sur un bouton Précédent que vous fournissez. – colithium

+1

"J'ai un assistant de réservation dans Android, quand je dis assistant, je veux dire que j'ai plusieurs activités (ce qui signifie des écrans) qui sont transmis de l'un à l'autre jusqu'à ce que la réservation est terminée." - pensez à utiliser une seule activité ici, avec un 'ViewFlipper' ou quelque chose à déplacer entre les étapes de l'assistant. – CommonsWare

+0

Colithium: je devrais et je fais :-) mais c'est la chose avec les services Web que tout le monde peut utiliser à moins de vérifier chaque étape de la façon dont vous ne pouvez pas être sûr à 100% que vous avez toujours ce que vous cherchez (surtout quand vient à des vacances). – codeScriber

Répondre

0

I Got un indice qui me fait penser dans une autre direction:

  1. utiliser une activité invisible, ou bien, un service local, qui est le « cerveau » qui connaît à chaque tour de la façon dont ce des mesures doivent être prises. pour supprimer une pile complète d'activités inutiles, je devrais utiliser le FLAG_ACTIVITY_CLEAR_TOP sur l'activité la plus basse que je veux utiliser ensuite.
  2. Une autre option consiste à enfermer toutes les activités que je veux jouer avec leur pposition sur la pile à l'intérieur un objet ActivityGroup qui maintient toutes les activités en vie (comme dans Tab) et sur la pile, mais vous contrôlez qui un est affiché et qui est pas. le groupe d'activités contiendra la logique de la machine d'état concernant dont Actvity ne doit pas être affiché et qui doit être disposé. Ne devriez-vous pas valider ce qu'il y a sur chaque activité avant de passer à l'activité suivante?
Questions connexes