Bonjour à toutes & tous,
Je suis un peu débutant en programmation Android, et je suis face à un problème de cycle de vie de fragment que je ne maîtrise pas du tout.
Dans un app' avec quelques activités (Main / Login / List), je démarre le Main pour checker les données embarquées, et au besoin demander à l'utilisateur de se connecter (Login). Une fois cela fait, ou au démarrage (avec connexion déja effectuée), le Main lance l'activité List qui se présente en "Master flow detail". Uniquement sur tablette, j'ai un menu fixe à gauche, une page de contenu à droite. Assez basique.
Un premier clic menu amène un fragment dans le container de contenu (avec FragmentManager.replace()) et un second clic dans le fragment (ListView) amène à un autre fragment (toujours via le FragmentManager.replace()).
Sur ce dernier fragment (Item), il y a un button permettant d'amener la mire de reconnaissance vocale, utilisée via le classique "RecognizerIntent". Je démarre mon Intent avec un startActivityForResult() puis je surcharge la méthode de retour onActivityResult pour récupérer le texte reconnu et l'afficher dans un TextView de mon fragment Item.
Mais le souci est que le fragment se recharge après avoir exécuté le onActivityResult, et mes données sont perdues, du moins, mon texte reconnu. Normal il a fait comme si le fragment venait d'être chargé. Et lors du onCreateView, le Bundle fournit en argument est null.
J'ai tenté de créer un nouveau projet Master flow detail et de reproduire (rapidement) le fonctionnement (sans toutes les données autour), et après avoir reçu le résultat du RecognizerIntent, mon fragment ne bronche pas et reste en place.
J'ai tenté de garder mon fragment depuis mon activité List, de le stocker dans une variable de la classe, de récupérer l'évènement demandant d'afficher la reconnaissance vocale et de gérer le résultat depuis cette activité afin l'envoyer au fragment via une méthode. Mais pareil, mon fragment est sans cesse rechargé à la fin de l'intent.
J'ai lu que cela pouvait être produit par Android, qui considère qu'il a besoin de mémoire, du coup, il kill, mais mon app doit consommer entre 5 & 10mo de mémoire (visible via le tracker Android Studio)
Partager