Comment rendre un résultat grâce à plusieurs activités

Dans une partie de ma demande, il existe une structure d'activités comme celle-ci:

Entrez la description de l'image ici

L'activité A est mon activité à domicile où je reviens après chaque processus ou cours.
L'activité B est une activité de confirmation simple.
L'activité C est une autre activité de confirmation.
L'Activité D fait un certain processus et finalement il récupère le résultat de mon activité à domicile (Activité A).

Exigences:

Activité B et C:

  • Doit être là et ne peut pas être fusionné en un seul.
  • Quand il est cliqué sur le bouton d'annulation, il appelle fin () et ne fait rien.
  • Quand il est cliqué sur le bouton OK, il suit le flux et les appels d'activité en cours finissent ()

Question:

Je pensais utiliser startActivityForResult () mais je ne l'ai jamais utilisé pour réussir à travers de nombreuses activités.
Je pensais également passer un gestionnaire (créé dans l'activité A) qui appelle une méthode sur l'activité A et qui est exécuté sur l'activité D …

Comment pourrais-je l'implémenter?

3 Solutions collect form web for “Comment rendre un résultat grâce à plusieurs activités”

Vous pouvez utiliser le drapeau de l'intention FLAG_ACTIVITY_FORWARD_RESULT comme décrit dans Intention lors du démarrage des activités B et C

Public static final int FLAG_ACTIVITY_FORWARD_RESULT Depuis: API Niveau 1

Si cette option est définie et que cette intention est utilisée pour lancer une nouvelle activité par rapport à celle existante, la cible de réponse de l'activité existante sera transférée à la nouvelle activité. De cette façon, la nouvelle activité peut appeler setResult (int) et renvoyer ce résultat à la cible de réponse de l'activité d'origine.

De cette façon, A devrait retirer toute donnée renvoyée dans les extras renvoyés de D

Oui, super formatage. Et vous pouvez – et probablement – appeler définitivement startActivityForResult() de chacune des activités A, B et C (et ne pas finish() tout de suite). En B et C, vous pouvez vérifier un résultat réussi et finish() , en passant le résultat à A.

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if((resultCode == RESULT_OK) && (requestCode == MY_RESULT_CODE)) { setResult(RESULT_OK, data); finish(); } } 

Si vous voulez que B et C disparaissent indépendamment, procédez comme suit:

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { setResult(resultCode, data); finish(); } 

Vous pouvez faire B et C comme boîtes de dialogue qui sont tirées de A et seulement si B et C sont correctes, vous exécutez D avec startActivityForResult()

coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.