2010-10-09 6 views
3

J'ai une application Android avec 3 onglets dans un TabHost (étiquettes de texte, pas d'images). Je mis en place les onglets comme ceci:Modifier le texte sur un onglet Android

intent = new Intent().setClass(this, AnnouncementsActivity.class); 
spec = tabHost.newTabSpec("news").setIndicator("News").setContent(intent); 
tabHost.addTab(spec); 

je démarre un thread d'arrière pour aller chercher les annonces de mon serveur et je veux mettre à jour l'étiquette de texte sur l'onglet pour indiquer à l'utilisateur combien de nouvelles annonces il y a. Par exemple, je veux changer le texte sur l'onglet "News (3)". Comment puis-je accéder et modifier l'étiquette de texte sur l'onglet?

Toutes les suggestions sont les bienvenues!

Répondre

0

Regardez dans le code démontré here, voir à la fin du code il y a moyen hacky pour obtenir le textView.

+0

Merci pour la réponse. Je n'ai aucun problème pour accéder au TabHost, mon problème est que je ne trouve rien dans le TabHost qui me permette de changer le texte sur l'onglet. Comment puis-je changer le texte une fois que j'ai la référence TabHost? –

+0

Ok, merci pour le lien. Tu as raison, c'est vraiment hackish et je ne sais pas pourquoi il n'y a pas un moyen plus simple, mais ça marche pour moi, ça va faire pour l'instant. Merci encore! –

5

Vous pouvez le faire comme ça

TabHost tabHost = getTabHost(); 
TextView tv = (TextView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title); 
tv.setText("New Tab Text"); 

android.R.id.title est généré par le système, il suffit de changer childIndex et Texte selon vos besoins

+0

Merci belle solution fonctionne ici. –

+0

Pour moi, il donne une exception de pointeur nul pour le textView. Pouvez-vous m'expliquer cela pour moi? –

+0

@ParthibanM veuillez voir mon message ci-dessous comme une solution possible à votre exception de pointeur nul. – oddmeter

1

Pour une version plus récente d'Android (5.1), cela a fonctionné pour moi:

Veuillez noter que cet exemple ne change que le texte du premier onglet. Il ne serait pas trop difficile de s'adapter à un onglet arbitraire. Tout ce que j'ai fait était de le lancer dans le débogueur et de comprendre la hiérarchie. Je ne pouvais pas obtenir le android.R.id.title à travailler comme la vue de texte est maintenant référencée par un ID différent. Quoi qu'il en soit, c'est maintenant un AppCompatTextView au lieu d'un simple ancien TextView.

Encore une fois, ce n'est pas optimal, mais obtient le résultat souhaité pour les versions plus récentes d'android.

Espérons que cela aide!

+0

Merci, cela a bien fonctionné. –

0

Récemment, j'ai besoin de changer le texte de TabHost et j'ai résolu le problème en utilisant le code suivant.

Veuillez excuser mon anglais, je suis brésilien et j'apprends encore. J'espère aider quelqu'un qui a le même problème.

TabHost host = (TabHost)findViewById(R.id.tabDetail); 
    host.setup(); 

    //Tab 1 
    TabHost.TabSpec spec = host.newTabSpec("tab1"); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("Details"); 
    host.addTab(spec); 

    //Tab 2 
    spec = host.newTabSpec("tab2"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("Comments"); 
    host.addTab(spec); 
Questions connexes