FragmentTabHost & Fragments - Comment puis-je transférer des données entre les onglets?
J'ai un MainActivity (FragmentActivity) qui a un FragmentTabHost.
public class FragmentTabs extends FragmentActivity {
private FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tabs);
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("classA").setIndicator("Class A"),
ClassA.class, null);
mTabHost.addTab(mTabHost.newTabSpec("classB").setIndicator("Class B"),
ClassB.class, null);
mTabHost.addTab(mTabHost.newTabSpec("classC").setIndicator("Class C"),
ClassC.class, null);
}
}
ClassA, ClassB et ClassC sont tous Fragments (android.de soutien.v4.app.Fragment).
J'ai besoin de passer des données (et des méthodes d'appel) sur les Fragments. Comment puis-je obtenir une référence de chacun des Fragments, comme ceci:
ClassA mClassAFragment = ???;
J'ai essayé d'utiliser getSupportFragmentManager().findFragmentByTag() et j'ai aussi essayé d'explorer les capacités de mTabHost. Rien ne peut les obtenir.
Pouvez-vous suggérer une façon de faire ou de proposer une autre approche?
Vous devez vous connecter pour publier un commentaire.
OP ici. Pour résoudre ce problème que j'ai surchargé le onAttachFragment méthode dans mon FragmentActivity:
.equals()
comparaison pour le fragment classes au lieu de directement==
comparateur.Vous pouvez obtenir votre fragment comme ceci:
Pour envoyer des données à un fragment, vous pouvez suivre cette approche, la création d'une nouvelle transaction et d'envoyer les données par le biais d'un bundle.
Ceci peut être accompli par le 3ème argument de android.de soutien.v4.app.FragmentTabHost.addTab(TabSpec, de Classe, de groupe args),
ensuite, les arguments peuvent être récupérées par un android.de soutien.v4.app.Le Fragment.getArguments()
}
getArguments()
retourne toujours null. Une honte, vraiment...