J'ai 3 classes dans mon exemple: la classe A, l'activité principale. La classe A appelle un startActivityForResult:
Intent intent = new Intent(this, ClassB.class);
startActivityForResult(intent, "STRING");
Classe B, cette classe est une TabActivity:
Intent intent = new Intent(this, ClassC.class);
tabHost.addTab...
Classe C, cette classe est une activité régulière:
Intent intent = this.getIntent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();
onActivityResult est appelé dans la classe A, mais le resultCode est à la RESULT_CANCELED
place de RESULT_OK
et l'intention retournée est nulle. Comment puis-je retourner quelque chose de l'activité à l'intérieur d'un TabHost?
Je me rends compte que le problème est que ma classe C fonctionne réellement à l'intérieur de la classe B, et la classe B est ce qui RESULT_CANCELED
ramène le dos à la classe A. Je ne connais pas encore de solution.
la source
http://tylenoly.wordpress.com/2010/10/27/how-to-finish-activity-with-results/
Avec une légère modification pour "param_result"
la source
setResult
c'était l'essentiel. Réglez-le sur quelque chose, ou une valeur par exempleRESULT_OK
et vous êtes prêt à partir;setResult(RESULT_OK);
. M'a aidé, +1Intention.FLAG_ACTIVITY_FORWARD_RESULT?
la source
Vous pouvez également implémenter un onActivityResult dans la classe B et lancer la classe C à l'aide de startActivityForResult. Une fois que vous obtenez le résultat en classe B, définissez-le (pour la classe A) en fonction du résultat de la classe C. Je n'ai pas essayé cela, mais je pense que cela devrait fonctionner.
Une autre chose à surveiller est que l'activité A ne doit pas être une activité à instance unique. Pour que startActivityForResult fonctionne, votre classe B doit être une sous-activité de l'activité A et ce n'est pas possible dans une activité d'instance unique, la nouvelle activité (classe B) démarre dans une nouvelle tâche.
la source
Pour démarrer l'activité 2 à partir de l'activité 1 et obtenir le résultat, vous pouvez utiliser startActivityForResult et implémenter onActivityResult dans l'activité 1 et utiliser setResult dans l'activité2.
la source