2011-09-26 14 views
5

Grazie per aver verificato la mia richiesta!Android - onTabChanged non viene richiamato selezionando una scheda diversa

Ho implementato un ambiente di tabulazione come illustrato di seguito. Sembra funzionare come mi aspettavo, tranne che non esegue mai il metodo onTabChanged. Ho trovato diversi post su questo tipo di situazione, ma non sono riuscito a far funzionare il mio codice come mi aspettavo. Consigli?

Grazie, 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"); 
} 
} 

risposta

13

non vedo che si registra la classe per un cambiamento scheda con tabHost.setOnTabChangeListener(this).

Suggerirei di farlo prima dello tabHost.setCurrentTab(0).

Anche se non è chiamato sul primo set della scheda, è possibile chiamare manualmente onTabChanged("page1") alla fine di onCreate.

Oppure ho capito male il tuo problema?

+1

Grazie Knickedi! Ero cieco ma ora vedo. –

Problemi correlati