web-dev-qa-db-fra.com

Comment changer d'onglet par programme dans Android à partir d'un fragment?

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);
}
22
vinothp

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.

20
vinothp

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.

26
Kennedy Nyaga

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();
14
BENN1TH

Jetez un œil à cette réponse: https://stackoverflow.com/a/5460651/198996

((TabActivity) getParent()).getTabHost().setCurrentTab(2)
6
TomTasche

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)

0
lea.cotan