Comment passer des données d'activité de fragment
J'ai quelques problèmes de transmettre les données à partir d'une activité de fragments. J'ai cherché un peu partout mais n'ai pas trouver de réponse adapté à ma situation.
J'ai 2 fragment classe nommée CurrentFragment.java
et HistoryFragment.java
. Je les initialiser comme des onglets dans une Activité.
Tab tab = actionBar.newTab()
.setText(R.string.tab_current)
.setTabListener(new TaskitTabListener<CurrentFragment>(
this, "current", CurrentFragment.class));
actionBar.addTab(tab);
tab = actionBar.newTab()
.setText(R.string.tab_history)
.setTabListener(new TaskitTabListener<HistoryFragment>(
this, "history", HistoryFragment.class));
actionBar.addTab(tab);
M'a dit d'utiliser setArguments
dans l'Activité et getArguments
dans les fragments. Mais dans cette situation, comment puis-je obtenir fragment d'objets dans l'Activité? Je ne peux pas utiliser getFragmentManager().findFragmentById()
depuis les fragments sont ajoutés par programmation.
Aussi, je trouve certains messages disant que je peut utiliser getActivity()
dans les fragments de données de l'accès à l'Activité dans le conteneur, mais pour moi, c'garder retourner null. Est-ce quelqu'un a un exemple de travail de qui?
getActivity()
retourne null
dans onAttach méthode?Essayez de setArguments dans votre TaskitTabListener.onTabSelected().
Oui, il ruturns null dans
onAttach
.Merci. Je vais essayer ça.
OriginalL'auteur OckhamTheRazor | 2012-11-29
Vous devez vous connecter pour publier un commentaire.
[EDIT] j'ai mis à jour ma réponse afin de mieux répondre à votre question.
Vous pouvez également récupérer des fragments par tag avec
getFragmentManager().findFragmentByTag("tag")
. Attention cependant, si l'onglet n'a pas été vu encore le fragment n'existent pas.Si vous voulez que le fragment pour extraire les données à partir de l'activité de votre activité, mettre en œuvre une Interface définie par le fragment. Dans le
onAttach(Activity activity)
fonction du cycle de vie pour les fragments, vous obtenez l'accès à l'activité qui a créé le fragment de sorte que vous pouvez lancer cette activité en tant que l'Interface que vous avez défini et faire des appels de fonction. Pour le faire mettre l'interface en votre fragment comme ceci (Vous pouvez aussi faire l'interface de son propre fichier si vous souhaitez partager la même interface entre de nombreux fragments):De mettre en œuvre l'interface dans votre activité de ce genre:
Enfin dans votre
onAttach(Activity activity)
méthode dans CurrentFragment fonte de l'activité que vous recevez comme l'interface que vous avez créés, de sorte que vous pouvez appeler ces fonctions.J'ai mis à jour ma réponse parce que je ne peux pas faire assez de code dans les commentaires. Check it out pour votre réponse.
Génial! Qui fonctionne pour moi. Merci pour votre aide.
OriginalL'auteur Sam Burba