Fragments startActivityForResult toujours revenir resultCode 0 et l'intention null sur rappel onActivityResult

J'ai cherché partout et il y a des postes similaires à ce sujet, mais ne peut pas trouver une solution!

Ma situation est que j'ai une Activité qui est titulaire d'un fragment, et à partir de ce fragment je veux commencer une nouvelle Activity B qui doit renvoyer des valeurs de la fragment.

Sur le fragment

startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);

Sur le Activity B, pour renvoyer les données

Intent returnIntent = new Intent();
returnIntent.putExtra(SerializationConstants.isSearchSaved, mAbItemsShown.ordinal());
setResult (ConstantsUtils.SUCCESS_RETURN_CODE, returnIntent);
finish();

Sur le fragment

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

switch (requestCode) {

    case ConstantsUtils.TOMAP_REQUEST_CODE:

            if (resultCode == ConstantsUtils.SUCCESS_RETURN_CODE) {
              //do some stuff 
            }
    }
}

onActivityResult de la fragment est appelé avec succès, avec le droit requestCode mais resultCode est toujours 0 et l'intention est toujours null.

Je n'ai pas d'autres onActivityResult mise en œuvre en vertu de Activity A.

En fait, j'ai aussi essayer de démarrer le activity de la fragment avec
getActivity().startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);
et la mise en œuvre de onActivityResult sur Activity Un mais il arrive la même chose, droit requestCode mais mal resultCode et intent.

Je suis en utilisant Sherlock Action Bar donc mon fragment est un SherlockListFragment donc je suis en utilisant le support library (r18).

Pouvez-vous m'aider? Grâce

Je ne sais pas ce que votre super.onActivityResult(requestCode, resultCode, intent); pour. Il n'est pas nécessaire, à mon avis. Aussi, votre request_code besoin d'être >= 0, comme le mentionne [ici][doc][doc]: developer.android.com/reference/android/app/..., int)
super n'est pas nécessaire, j'essayais juste de voir si le problème a cause de ça, mais même résultat si je ne la mets pas. La constante SUCCESS_RETURN_CODE a une valeur de 1, mais la même chose se passe avec l'Activité.RESULT_OK
On dirait que vous appelez finish() ailleurs dans ActivityB. L'appel de finish() sans paramètre le code de résultat et de résultat résultat serait exactement le comportement que vous décrivez. Soit ça, ou ActivityB est en panne, qui ferait la même chose.
Puis-je vous conseiller de vérifier l'Activité d'Un, dans onStart() ou onResume partie. Si vous créez une nouvelle instance de l'fragment dans lequel vous avez appelé startActivityForResult, il serait le problème. Normalement, Android sera automatiquement restaurer l'état précédent, si vous avez une activité B appellent finish(). J'ai donc créer un autre fragment exemple manuellement, il remplacera celui qui obtenir le retour de l'Intention.

OriginalL'auteur nirvik | 2013-08-29