2016-02-18 2 views
2

J'utilise un Fragment pour commencer une nouvelle Activity en utilisant startActivityForResult(), je reçois le résultat (Bundle) dans onActivityResult() method.Since onActivityResult() appelé avant onResume () .Je veux m'assurer, je garde/enregistre le Bundle correctement de sorte que quand onResume() soit appelé, j'obtiens le résultat gardé/sauvé pour effectuer plus d'action.Passe onActivityResult() données au même fragment qui n'est pas encore prêt

Quelles sont les différentes façons d'y parvenir. J'ai essayé d'utiliser getArguments()/setArguments(), mais cela ne semble pas être le bon moyen d'y parvenir.

+0

Qu'est-ce que cela signifie? –

+0

Pourquoi ne pas enregistrer le résultat dans un champ de classe simple (votre classe de fragment) –

+0

Je veux essayer de la bonne façon, en utilisant des variables ou des méthodes peut également conduire à un crash, car Fragment lui-même peut ne pas être disponible lors de l'utilisation de variables membres. –

Répondre

2

Essayez cette

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == MY_REQUEST) { 
     // Make sure the request was successful 
     if (resultCode == RESULT_OK) { 
      mResultBundle = data.getExtras(); //mResultBundle is in fragment 
      //scope 
     } 
    } 
} 

@Override 
protected void onResume(){ 
    super.onResume(); 
    if(mResultBundle != null){ 
     // process saved bundle from activity result here 

     // don't forget to set it back to null once you are done 
     mResultBundle = null; 
    } 
} 
+0

Je veux essayer la bonne façon, en utilisant des variables ou des méthodes peuvent aussi conduire à un crash, car Fragment lui-même peut ne pas être disponible lors de l'utilisation des variables membres. –

+0

Chaque fois que la méthode onActivityResult est appelée. Il y aura une instance de fragment. Sur cette instance, vous affectez le résultat en tant que variable membre. Que pensez-vous pourrait mal tourner dans ce scénario? –

+0

Il ne peut pas y avoir d'instance de fragment, Puisque onActivityResult() est appelé avant que le fragment ne soit prêt. Lisez ceci: http://steveliles.github.io/android_activity_lifecycle_gotcha.html –