2011-09-26 9 views
5

Dziękujemy za sprawdzenie mojego zapytania!Android - funkcja onTabChanged nie była wywoływana po wybraniu innej karty

Zaimplementowałem środowisko zakładek, jak pokazano poniżej. Wydaje się działać tak, jak się spodziewałem, z tym wyjątkiem, że nigdy nie wykonuje on metody onTabChanged. Znalazłem kilka postów dotyczących tego typu sytuacji, ale nie udało mi się sprawić, że mój kod zadziała tak, jak się spodziewałem. Rada?

Dzięki Chip

public class TestTabActivity extends TabActivity implements OnTabChangeListener { 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Resources res = getResources(); // Resource object to get Drawables 
    TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Resusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    intent = new Intent().setClass(this, Page1Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    spec = tabHost.newTabSpec("page1").setIndicator("Page 1", 
         res.getDrawable(R.drawable.ic_tab_page1)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Page2Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("page2").setIndicator("Page 2", 
         res.getDrawable(R.drawable.ic_tab_page2)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Page2Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("page3").setIndicator("Page 3", 
         res.getDrawable(R.drawable.ic_tab_page3)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTab(0); 
} 

public void onTabChanged(String tabId) { 
    Log.d("Tab Changed", "Changed a Tab"); 
} 
} 

Odpowiedz

13

nie widzę zarejestrowanie klasy na zmianę zakładki z tabHost.setOnTabChangeListener(this).

Proponuję to zrobić przed tabHost.setCurrentTab(0).

Nawet jeśli nie jest wywoływany w pierwszym zestawie karty, można ręcznie wywołać onTabChanged("page1") pod koniec onCreate.

A może przegapiłem twój problem?

+1

Dziękuję Knickedi! Byłem ślepy, ale teraz widzę. –

Powiązane problemy