2010-05-29 8 views
13

Mon application doit mettre à jour dynamiquement l'indicateur de tabulation, j'essaye de le faire en invoquant TabSpec.setIndicator(), mais cela ne fonctionne pas. Voici mon code:Modifier dynamiquement l'indicateur d'onglet dans Android

Dans la méthode onCreate de TabActivity:

tabHost = getTabHost(); 
TabSpec tabSpec = tabHost.newTabSpec("abc"); 
tabSpec.setIndicator("helloabc"); 
tabSpec.setContent(new MyViewFactory()); 
tabHost.addTab(tabSpec); 

Maintenant, je dois changer l'indicateur d'onglet à une autre chaîne, par exemple, "xyz"

TabSpec tabSpec = MyTabActivity.getTabSpec(); 
tabSpec.setIndicator("xyz"); 

Mais il n » t travail. Donc, je voudrais savoir comment changer l'indicateur de tabulation après qu'il a été ajouté au tabhost? Merci beaucoup.

Solution

Merci à @CommonsWare, je le fais à l'aide TabWidget.getChildAt, voici mon code pour votre commodité:

TextView title = (TextView) tabHost.getTabWidget().getChildAt(tabId).findViewById(android.R.id.title) 
title.setText("xyz"); 
+0

peut changer l'indicateur d'image de cette façon? – keen

Répondre

13

Je présente mes excuses pour ma réponse précédente incorrecte, alors supprimée . Essayez le getChildViewAt() sur TabWidget.

+0

Comment puis-je changer l'indicateur d'image de la barre d'onglets? – keen

7

J'ai été créé avec getChildTabViewAt(tabId) au lieu de childviewAt(id) pour plusieurs onglets.

1

Essayez ceci:

TextView title = (TextView) TabHost.getTabWidget().getChildTabViewAt(tabId).findViewById(android.R.id.title);