154 votes

Android - startActivityForResult déclenchant immédiatement onActivityResult

Je suis en train de lancer des activités à partir de l'activité principale dans mon application en utilisant l'appel startActivityForResult(intent, ACTIVITY_TYPE), et ils travaillent tous, mais un seul.

Celui-ci, lorsqu'il est appelé, se lance dans l'activité comme vous le souhaitez, mais dans le journal, je peux voir qu' onActivityResult() est immédiatement déclenché. L'activité présente des mais RESULT_CANCELLED est immédiatement retourné à l' onActivityResult().

J'ai ensuite interagir avec l'activité, appuyez sur un bouton qui appelle finish(), et onActivityResult() n'est pas appelée le temps (parce qu'apparemment, un résultat a déjà été retournés).

Cela fait-il sens à tout le monde? Quelqu'un a vu ce problème avant?

323voto

Falmarri Points 20281

Vous ne pouvez pas utiliser si votre activité est lancée comme un ou `` .

122voto

James Zhang Points 190

En outre, assurez-vous que l’intention n’est pas le `` défini.

21voto

pangcong Points 81

J’ai vu ce problème avant, s’il vous plaît assurez-vous que votre activité de destination (cette activité spéciale) n’est pas dans file.if AndroidManifest est l’activité , puis il retournera `` avant lancement !

20voto

user1949634 Points 88

Je voudrais aussi ajouter qu’on pourrait appeler une application externe avec :
Qui créerait une intention avec ajoutées par défaut, donc l’appeler :
Qui efface ce drapeau, et puis vous pouvez procéder à :

Raison pour laquelle que j’ai fais c’est que j’ai une application utilitaire qui a des fonctionnalités communes entre quelques autres apps et je peux garder les modifications du code à un seul endroit au lieu de se préoccuper de plusieurs mises à jour.

0voto

fantaxy025025 Points 369

Pour ActivityGroup ou TabHost et les autres, peut-être l' xxxActivity est subActivity de son parent. Puis l' startActivityForResult ne peuvent pas travailler, mais le parent peut obtenir le résultat.

  1. appelez getParent().startActivityForResult() de vos sous-activité

  2. votre parent ( ActivityGroup) sera en mesure de gérer l' onActivityResult. J'ai donc créé une sous-classe de ActivityGroup et géré cette onActivityResult.

  3. Vous pouvez re-route que les résultats de la sous-activité si vous en avez besoin. Juste obtenir le courant de l'activité en getLocalActivityManager().getCurrentActivity() . Mon sous-activités d'hériter d'une activité personnalisée j'ai donc ajouté un handleActivityResult(requestCode, resultCode, data) dans cette sous-classe pour l' ActivityGroup d'appel.

exemple: http://www.cnblogs.com/relinson/archive/2012/03/25/startActivityForResult.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X