2014-07-26 2 views
1

Problème lié au fait que le paramètre onActivityResult du fragment détruit est toujours appelé.le fragment détruit onActivityResult est appelé à la place du fragment redémarré

Le système d'exploitation peut détruire l'activité pour une raison quelconque (c'est-à-dire que l'activité passe en arrière-plan et avec une mémoire insuffisante, et pas seulement le changement de configuration). Dans mon cas de test, il y a une activité/fragment pour lancer l'activité de la caméra, quand la vue de la caméra est en place, l'os peut détruire le fragment de déjeuner (un moyen plus simple de le faire est de paramètres d'option Developer (mais vous n'avez pas, la destruction peut se produire pour certaines raisons, l'os décide de le faire).

Il est semblable au problème de Android: Activity getting Destroyed after calling Camera Intent

mais ici la différence est le fragment F1 a ouvert l'activité de la caméra OnDestroy de la F1 est appelée par os Après avoir pris une photo de l'activité de la caméra et retourné au fragment de déjeuner, l'os la recrée mais c'est une nouvelle instance F2 du fragment

La trace montre l'onActivityResult sur l'instance de fragment F1 est toujours appelée avec les nouvelles données de la photo, mais l'instance de fragment F2 onActivityResult n'est pas appelée.

Est-ce un problème courant lorsque le destroyer/recréer par os? Comment attraper le rappel de l'activité ouverte (comme dans ce cas la caméra) et passer les données à l'instance de fragment nouvellement créée?

Merci!

Répondre

1

Je pense que le problème est que lorsque os recréer l'activité sur onCreate (Bundle savedInstanceState), nous devrions vérifier savedInstanceState pour ne pas recréer une nouvelle instance de fragment supplémentaire. Laissez l'os faire la recréation de l'occurrence de fragment. Ensuite, onActivityResult() est appelé sur l'instance de fragmentation appropriée.

Questions connexes