android: fait de l'activité d'attente pour l'activité B à la fin et retourne des valeurs
J'ai un programme qui doit...
- Dans
Activity A
, faire quelques travaux - Démarrage
Activity B
(unWebView
), permet à l'utilisateur remplit certaines informations, puis recueillir le résultat - Puis enfin de traiter les données
Actuellement je l'ai configuré comme ceci:
Dans Activity A
:
...
startActivityForResult(this, new Intent(ActivityB.class));
...
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
//get result from data, do something with it
...
}
Cela semble un peu maladroite, car j'ai besoin de diviser la tâche en plusieurs parties différentes. J'ai besoin de gérer les exceptions levées dans toutes les pièces et il est gênant de le faire de cette façon. Est-il une meilleure méthode?
Aussi, après l'étape (3) ci-dessus, je vais répéter cette étape plusieurs fois, à chaque fois que vous publiez le résultat final d'un textview. Je pense que cela signifie que je dois mettre dans un AsyncTask
, mais qui rend encore plus difficile (où devrait onActivityResult
?).
OriginalL'auteur Tyrone | 2012-06-15
Vous devez vous connecter pour publier un commentaire.
La réponse est simple, il n'y a pas d'autre moyen. C'est de cette manière c'est-à-dire à faire en Android. La seule chose, je crois, vous êtes absent est le passage d'un code d'interrogation à l'activité de B. Sans elle, vous ne seriez pas en mesure de différencier ce qui des autres activités résultat renvoyé à l'activité A.
Si vous êtes en invoquant différentes activités à partir de votre Un, l'utilisation de différentes
requestCode
paramètre lors du démarrage de l'activité. En outre, vous pouvez transmettre des données en retour à l'activité B à l'aide de la mêmeIntent
approche (ok, presque tout):Puis dans votre
on ActivityResult
:OnActivityResult
est exécutée dans le thread GUI, donc vous pouvez faire toutes les mises à jour que vous souhaitez directement ici.Enfin, dans l'Activité B, vous devez avoir:
Je ne suis pas sûr pourquoi vous avez besoin de
AsyncTask
pour gérer les résultats.OriginalL'auteur Aleks G