352 votes

Envoyer des données d’activité à fragmenter dans android

J’ai deux classes. Tout d’abord est l’activité, ensuite est un fragment où j’ai quelques edittexts. En activité, j’ai une sous-classe avec async tâche et dans la méthode `` j’obtiens un résultat, qui j’ai enregistrer dans la variable. Comment puis-je envoyer cette variable de sous-classe « mon activité » à ce fragment ?

728voto

ρяσѕρєя K Points 51253

D’activité, vous envoyer des données avec l’intention comme :

et dans la méthode onCreateView de Fragment :

120voto

Ricardas Points 61

Également vous pouvez accéder à des données d’activité de fragment :

Activité :

Fragment :

57voto

Elenasys Points 23268

I´ve trouvé beaucoup de réponses ici @ stackoverflow.com mais c’est certainement la bonne réponse de :

« Envoi de données de l’activité à fragmenter dans android ».

Activité :

Fragment :

Lecture de la valeur dans le fragment

ou tout simplement

8voto

Martin Points 2200

Si vous passer une référence à la (sous-classe concrète de) fragment dans le async tâche, vous pouvez alors accéder à l'fragment directement.

Quelques façons de passer le fragment de référence dans l'async task:

  • Si votre asynchrone est un travail à part entière de la classe (class FooTask extends AsyncTask), puis de passer votre fragment dans le constructeur.
  • Si votre async task est un intérieur de classe, il suffit de déclarer un dernier Fragment variable dans la portée de la tâche asynchrone est définie, ou en tant que champ de l'extérieur de la classe. Vous serez en mesure d'accéder qu'à partir de l'intérieur de la classe.

5voto

sberezin Points 134

Très vieux post, encore, j'ose ajouter un peu d'explication qui aurait été utile pour moi.

Techniquement, vous pouvez régler directement les membres de n'importe quel type dans un fragment de l'activité.
Alors pourquoi Bundle?
La raison en est très simple - Bundle fournit de façon uniforme pour traiter:
- création/d'ouverture fragment
-- reconfiguration à la rotation de l'écran) - il suffit d'ajouter l'initiale/mis à jour bundle pour outState dans onSaveInstanceState()
-- application de la restauration après avoir été nettoyés à fond (comme avec la reconfiguration).

Vous pouvez (si vous aimez les expériences) créer une solution de contournement dans des situations simples mais Bundle-approche n'est tout simplement pas voir la différence entre un fragment et un mille sur une backstack - il reste simple et directe.
C'est pourquoi la réponse par @Elenasys est la plus élégante et la solution universelle.
Et c'est pourquoi la réponse donnée par @Martin a des pièges

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X