Comment passer des données entre les fragments
Im essayant de transmettre des données entre deux fragmens dans mon programme. C'est juste une simple chaîne de caractères qui est stockée dans la Liste. La Liste est rendue publique dans les fragments d'Un, et lorsque l'utilisateur clique sur un élément de liste, j'en ai besoin de le montrer dans le fragment B. Le fournisseur de contenu ne semble que le soutien de l'ID, de sorte que ne fonctionnera pas. Des suggestions?
- stackoverflow.com/questions/7149802/... cela peut aider
- double possible de Android: Transmettre des données(extras) à un fragment
Vous devez vous connecter pour publier un commentaire.
Je pense que la communication entre les fragments doivent être fait par le biais de l'activité. Et de la communication entre le fragment et l'activité peut être fait de cette façon:
https://developer.android.com/training/basics/fragments/communicating.html
https://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
Si vous utilisez Roboguice vous pouvez utiliser le EventManager dans Roboguice pour transmettre des données sans l'aide de l'Activité comme une interface. C'est tout à fait propre, de l'OMI.
Si vous ne l'utilisez pas Roboguice vous pouvez utiliser Otto trop comme un événement bus: http://square.github.com/otto/
Mise à jour 20150909: Vous pouvez également utiliser le Robot Vert Événement Bus ou même RxJava maintenant trop. Dépend de votre cas d'utilisation.
De la
Fragment
la documentation:Donc, je vous suggère d'avoir regarder sur le de base fragment de formation docs dans la documentation. Ils sont très complet, avec un exemple et une promenade à travers le guide.
Pourquoi n'utilisez-vous pas un Bundle. À partir de votre premier fragment, voici comment le configurer:
Puis dans votre deuxième Fragment, de récupérer les données à l'aide de:
Bundle a mis des méthodes pour beaucoup de types de données. Veuillez voir http://developer.android.com/reference/android/os/Bundle.html
Donc, disons que vous avez de l'Activité AB qui contrôle Un Frag Fragment B.
À l'intérieur d'Un Fragment vous avez besoin d'une interface que l'Activité AB peut mettre en œuvre.
Dans l'exemple de code android, ils ont:
private Callbacks mCallbacks = sDummyCallbacks;
/*Une interface de rappel que toutes les activités contenant ce fragment doit mettre en œuvre. Ce mécanisme permet d'activités pour être averti des sélections d'articles.
*/
L'interface de Rappel est mis à l'intérieur de l'un de vos Fragments (disons que le Fragment A). Je pense que le but de cette Rappels de l'interface, c'est comme une classe imbriquée à l'intérieur d'Un Frag toute Activité peut mettre en œuvre. Donc, si Un Fragment a été d'une TÉLÉVISION, les Rappels est la Télécommande du TÉLÉVISEUR (interface) qui permet de Fragmenter Un à être utilisés par l'Activité de l'AB. J'ai peut-être mal à propos les détails parce que je suis un noob mais j'ai eu mon programme fonctionne parfaitement sur toutes les tailles d'écran et c'est ce que j'ai utilisé.
Donc à l'intérieur du Fragment A, nous avons:
(J'ai pris cette de Android exemples de programmes)
Et à l'intérieur de l'Activité AB nous remplacer la onItemSelected méthode:
Donc à l'intérieur de l'Activité de l'AB, en gros, vous jeter le tout dans un paquet et de le transmettre à B. Si u ne sont pas sûr de savoir comment utiliser un Bundle, regardez la classe.
Je suis fondamentalement en passant par l'exemple de code que Android fourni. L'un avec le DummyContent choses. Lorsque vous effectuez une nouvelle Application Android Package, c'est l'intitulé MasterDetailFlow.
1 - La première façon est de définir une interface
2 - En vous de l'activité mettre en œuvre OnMessage interface
3 - Dans votre fragment de mettre en œuvre OnReceive interface
C'est la version standard de manipulation de passage de messages entre les fragments.
Une autre façon de transmettre les données de passage entre les fragments à l'aide d'un bus d'événement.
1 - s'Inscrire/désinscrire à un événement de bus
2 - Définir une classe d'événements
3 - l'après cet événement, n'importe où dans votre application
4 - Abonnez-vous à cet événement afin de le recevoir dans votre Fragment
Pour plus d' des détails, des cas d'utilisation, et un exemple de projet sur l'événement de bus motif.
DANS mon cas, j'ai eu à envoyer les données vers l'arrière à partir de FragmentB->FragmentA donc Intentions n'était pas une option, puisque le fragment serait déjà initialisées à la Tous bien que tous les réponses ci-dessus, sonne bien, il faut un beaucoup de chaudière plaque de code pour mettre en œuvre, alors je suis allé avec beaucoup approche la plus simple de l'aide LocalBroadcastManager, il fait exactement le dessus de ladite mais sans alll le méchant du code réutilisable. Un exemple est partagée ci-dessous.
Dans L'Envoi De Fragment(Fragment B)
Et dans le Message Reçu Fragment(FRAGMENT A)
Espère que cela aide quelqu'un
Qui dépend de la façon dont le fragment est structuré. Si vous pouvez avoir quelques-unes des méthodes sur le Fragment de Classe B de la statique et de la cible TextView objet statique, vous pouvez appeler la méthode directement sur Fragment de la Classe A. C'est mieux qu'un auditeur que la méthode est effectuée instantanément, et nous n'avons pas besoin d'avoir une tâche qui effectue l'écoute tout au long de l'activité. Voir l'exemple ci-dessous:
Sur le Fragment B, vous pouvez avoir la méthode définie comme:
Il suffit de ne pas oublier d'avoir myTextView défini comme statique sur le Fragment B, et bien importer le Fragment B de la classe sur Fragment A.
Viens de faire la procédure sur mon projet récemment et ça a fonctionné. Espérons que cela a aidé.
vous pouvez lire cette doc .ce concept est bien expliqué ici http://developer.android.com/training/basics/fragments/communicating.html
Je travaille sur un projet similaire, et je pense que mon code peut aider dans la situation ci-dessus
Voici l'aperçu de ce que je suis en train de faire
Mon projet A deux fragments Appelés "FragmentA" et "FragmentB"
-FragmentA Contient une Vue de liste,lorsque vous cliquez sur un élément dans FragmentA C'est l'INDICE est passé à FragmentB utilisant l'interface du Communicateur
"référence de l'interface de variables peuvent se référer à un sous-objet"
Je suis déclenchement répondre() méthode de l'interface à partir de FrgamentA à l'aide de la MainActivity de référence.
Interface communcator est définie à l'intérieur d'fragmentA, c'est de fournir moins d'accès previlage à communicator interface.
ci-dessous est mon travail complet code
FragmentA.java
}
fragmentB.java
MainActivity.java
Essentiellement de mettre en Œuvre l'interface pour la communication entre l'Activité et le fragment.
1) l'activité Principale
2) l'expéditeur fragment (fragment-à-Activité)
3) récepteur du fragment (Activité-à-fragment)
J'ai utilisé ce lien pour la même solution, j'espère que quelqu'un va le trouver utile.
Très simple et un exemple de base.
http://infobloggall.com/2014/06/22/communication-between-activity-and-fragments/
Fragment de catégorie A
Fragment De Classe B
L'Activité principale de classe pour le passage des données entre les fragments
Detailde acitivité classe
Éventail De Pays
Pour Plus de Détails, visitez ce lien [http://wptrafficanalyzer.in/blog/itemclick-handler-for-listfragment-in-android/%5D. Il ya plein d'exemple ..
Fondamentalement, nous avons ici affaire à la communication entre les Fragments. La Communication entre les fragments ne peuvent jamais être directement possible. Elle implique une activité dans le contexte de laquelle les deux fragments sont créés.
Vous avez besoin pour créer une interface dans l'envoi de fragment et de mettre en œuvre l'interface de l'activité qui sera sursis le message et transfert à la réception de fragment.