2010-05-29 17 views
13

Moja aplikacja musi dynamicznie aktualizować wskaźnik karty, próbuję to zrobić, wywołując TabSpec.setIndicator(), ale to nie działa. Tu jest mój kodu:Modyfikuj wskaźnik karty dynamicznie w systemie Android

W onCreate metody TabActivity:

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

teraz muszę zmienić wskaźnik kartę do innego łańcucha, na przykład, "xyz"

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

Ale to nie robi” t działa. Chciałbym wiedzieć, jak zmienić wskaźnik tabulacji po dodaniu go do tabhost? Wielkie dzięki.

Rozwiązanie

Dzięki @CommonsWare, robię go za pomocą TabWidget.getChildAt, tutaj jest mój kod dla wygody:

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

mogę zmienić wskaźnik obrazu w ten sposób? – keen

Odpowiedz

13

mogę przeprosić za moje wcześniejsze błędnej odpowiedzi, teraz usunięte .

Spróbuj użyć getChildViewAt() na TabWidget.

+0

Jak mogę zmienić wskaźnik obrazu paska kart? – keen

7

i managaed z getChildTabViewAt(tabId) zamiast childviewAt(id) dla wielu kart.

1

Spróbuj tego:

TextView title = (TextView) TabHost.getTabWidget().getChildTabViewAt(tabId).findViewById(android.R.id.title); 
Powiązane problemy