2011-09-26 5 views
5

¡Gracias por consultar mi consulta!Android - no se invocó onTabChanged al seleccionar una pestaña diferente

He implementado un entorno de pestañas como se ilustra a continuación. Parece funcionar como esperaba, excepto que nunca ejecuta el método onTabChanged. He encontrado varias publicaciones sobre este tipo de situaciones pero no he podido hacer que mi código funcione de la manera que esperaba. ¿Consejo?

Gracias, viruta

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

Respuesta

13

no veo que registre su clase para un cambio pestaña con tabHost.setOnTabChangeListener(this).

Yo sugeriría hacer eso antes de tabHost.setCurrentTab(0).

Aunque no se invoque en el primer conjunto de la pestaña, puede llamar manualmente a onTabChanged("page1") al final de onCreate.

¿O no entendí mal su problema?

+1

Gracias Knickedi! Estaba ciego, pero ahora veo. –

Cuestiones relacionadas