J'ai implémenté un TabActivity
qui étend FragmentActivity
. Il a 5 onglets, chaque onglet est un Fragment
. Ce que je recherche, c'est de basculer entre les onglets par programmation.
Par exemple: si je suis dans tab4. Cliquez sur le bouton Je souhaite passer de tab4
à tab1
. J'ai beaucoup essayé mais je n'ai pas trouvé la solution.
J'ai essayé avec ce qui suit mais cela n'aide pas.
à partir de SecondTab
public void switchTabInActivity(String value){
FirstTab parent;
parent = (FirstTab) getActivity().getParent();
parent.switchTab(value);
}
TabActivity
/** To Change Tab*/
public void switchTab(String tabno){
this.onTabChanged(tabno);
}
Enfin, je peux basculer entre les onglets par programme à partir de fragments en utilisant la ligne de code suivante
TabHost Host = (TabHost) getActivity().findViewById(Android.R.id.tabhost);
Host.setCurrentTab(2);
J'espère que cela aidera quelqu'un.
pour la prise en charge matérielle, vous basculez la mise en page à partir d'un fragment de la manière suivante:
1) envoyer une diffusion reçue par l'activité parent qui modifie ensuite l'onglet.
context.sendBroadcast(yourintent);
2.) Une modification de la réponse de vino,
TabLayout tabhost = (TabLayout) getActivity().findViewById(R.id.tabLayout);
tabhost.getTabAt(2).select();
tablayout est l'id du tablayout tel que défini dans votre xml principal.
J'ai des onglets (utilisant TabLayout et non TabHost (déprécié)) (avec des fragments) dans mon activité principale dans lesquels dans mon premier onglet (fragment) avec un écouteur de clic dans le fragment qui sert à changer l'onglet actuel dans ma MainActivity.
J'ai réussi à changer l'onglet actuel via le ci-dessous dans la méthode onCreateView () dans le fragment.
TabLayout tabs = (TabLayout)((MainActivity)getActivity()).findViewById(R.id.tabs);
tabs.getTabAt(1).select();
Jetez un œil à cette réponse: https://stackoverflow.com/a/5460651/198996
((TabActivity) getParent()).getTabHost().setCurrentTab(2)
Si vous utilisez TabLayout au lieu de TabHost, je suggère une modification de la réponse de BENN1TH qui a fonctionné pour moi:
TabLayout tabs = getActivity().findViewById(R.id.tab_layout);
tabs.getTabAt(tabNumber).select();
(La différence est R.id.tab_layout
)