2017-09-15 5 views
0

J'ai 4 onglets, l'un d'entre eux est l'icône de notification. Par défaut, définissez toutes les icônes en utilisant les spécifications de l'onglet. Après un délai, je dois mettre à jour l'icône de l'onglet 4 avec un autre fichier de ressources. Comment mettre à jour tabhost? Y a-t-il des fonctions de mise à jour disponibles comme host.addTab (spec)?Comment mettre à jour une icône d'onglet spécifique dans tabhost android?

Répondre

1

Ici je suis en boucle tous les onglets et change la couleur et l'icône de l'onglet sélectionné. pour la boucle Je sélectionne tout d'abord l'onglet à désélectionner que seul l'onglet sélectionné est mis à jour les icônes et la couleur.

private void setTabColor(TabHost tabhost, int position) { 
    for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) { 
     //  unselected 
     tabhost.getTabWidget().getChildAt(i) 
       .setBackgroundResource(R.drawable.tab_unselected); 

     TextView tv = (TextView) tabHost.getTabWidget().getChildAt(i).findViewById(R.id.tvTabTitle); 
     tv.setTextColor(getResources().getColor(R.color.text_white)); 
    } 
    if (position > 0) { 
     //  selected 
     tabhost.getTabWidget().setCurrentTab(position); 
     tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()) 
       .setBackgroundResource(R.drawable.tab_selected); 
     TextView tv = (TextView) tabHost.getTabWidget().getChildAt(tabhost.getCurrentTab()).findViewById(R.id.tvTabTitle); 
     tv.setTextColor(getResources().getColor(R.color.tab_color)); 
    } 

} 

vous pouvez appeler méthode ci-dessus en utilisant

new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     //Do something here 
    setTabColor(myTabHost, myTabPosition); 
    } 
}, 5000); 
+0

java.lang.NullPointerException: Tentative d'invoquer la méthode virtuelle 'vide android.view.View.setBackgroundResource (int)' sur un référence d'objet nul. Affiche cette erreur de journal. {hôte = (TabHost) findViewById (R.id.tabHost); hôte.setup(); host.getTabWidget(). SetStripEnabled (faux); hôte.getTabWidget(). SetDividerDrawable (R.drawable.border_tab_activity); hôte.setup (this.getLocalActivityManager());}, déjà défini tabhost. –

+0

@SARATHV J'ai donné mon code que vous devez changer selon vos besoins. –

+1

code fonctionne bien, merci. J'ai fait une erreur à la tabulation, c'est pourquoi j'ai obtenu l'exception nullpointer –