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 ?
Réponses
Trop de publicités?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.
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