2011-05-19 4 views
0

J'ai un TabHost avec 4 onglets définis dans mon fichier layout.xml principal. J'essaye de configurer les onglets en ajoutant seulement les onglets spécifiés au TabHost (c'est-à-dire 1, 2 et 4, ou 1 et 3, ou ...).Afficher uniquement certains onglets dans TabHost android?

Si j'ajoute juste les 4 onglets, tout va bien, mais si je laisse l'un des 4, ceux que je montre n'ont aucun contenu affiché à l'intérieur d'eux.

Est-ce que quelqu'un sait quel pourrait être le problème ici?

tabs = (TabHost) findViewById(R.id.tabhost); 
    tabs.setup(); 

    TabSpec mainSpec = tabs.newTabSpec("Main Tab"); 
    mainSpec.setIndicator("Main", getResources().getDrawable(R.drawable.tab_main)).setContent(R.id.mainContent); 
    tabs.addTab(mainSpec); 


    if(param1) 
    { 
     TabSpec msgSpec = tabs.newTabSpec("Tab 2"); 
     msgSpec.setIndicator("Messages", getResources().getDrawable(R.drawable.tab_message)).setContent(R.id.messageContent); 
     tabs.addTab(msgSpec); 
    } 
    if(param2) 
    { 
     TabSpec tpSpec = tabs.newTabSpec("Tab 3"); 
     tpSpec.setIndicator("Timepoints", getResources().getDrawable(R.drawable.tab_message)).setContent(R.id.timepointContent); 
     tabs.addTab(tpSpec); 
    } 
    if(param3) 
    { 
     TabSpec passSpec = tabs.newTabSpec("Tab 4"); 
     passSpec.setIndicator("Passengers", getResources().getDrawable(R.drawable.tab_message)).setContent(R.id.passengerContent); 
     tabs.addTab(passSpec); 
    } 
+0

En théorie, je ne vois rien de mal avec votre code. Il doit y avoir quelque chose d'autre qui cause cela. – Squonk

+0

Hmm ok ... mon intuition était que ça avait quelque chose à voir avec les mises en page étant définies dans le fichier xml mais jamais ajoutées au TabHost? – TomBomb

+0

Ah, d'accord. Je pense que vous êtes peut-être sur la bonne voie. Essayez de définir les mises en page pour chaque onglet «contenu» dans leurs propres fichiers XML. Créez une mise en page d'onglet "principale" pour le TabHost mais gardez les vues de contenu en tant que mises en page distinctes. – Squonk

Répondre

1

Définissez la visibilité de l'onglet programme et laisser seul le contenu:

tabs.getTabWidget().getChildAt(2).setVisibility(4); 

Où « 2 » est l'identifiant de l'onglet pour cacher et « 4 » est la constante pour invisible.

+0

Merci qui m'a aidé à. Réglage de la setVisibility (4) m'a donné un trou noir. Comment puis-je faire l'activité que j'ai dans l'onglet pour remplir l'écran? – Erik