tablayoutonpagechangelistener tablayout tab studio setontabselectedlistener how example android tabs selection

android - studio - tablayout tablayoutonpagechangelistener



Android TabLayout selecciona la primera pestaƱa en el inicio (2)

Cuando intenta seleccionar la primera pestaña gramaticalmente, la inicialización de su vista no se completa. Use el controlador y espere hasta 100ms luego intente seleccionar la pestaña.

Pruebe esto en su onCreate()

new Handler().postDelayed( new Runnable(){ @Override public void run() { tabLayout.getTabAt(startSelection).select(); } }, 100);

Estoy usando TabLayout de Android Design Library. Tengo varias pestañas y cada pestaña tiene una acción cuando se selecciona. Entonces tengo un atributo startSelection, que realiza

tabLayout.getTabAt(startSelection).select();

Esto selecciona la pestaña y realiza la acción para esta pestaña. Funciona bien para cada pestaña excepto la primera, que se selecciona automáticamente en el inicio sin (!) Realizar la acción. ¿Alguien tiene una solución para esto?

No deseo utilizar el método onTabReselected porque esto causa otro comportamiento de TabLayout. También seleccionar la segunda pestaña y seleccionar la primera pestaña después no es una buena solución.

Atentamente


Entiendo. La solución es simple, use (una vez) onTabReselected y sobrescriba el oyente allí.

tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { @Override public void onTabSelected(Tab tab) { selectTab(tab); } private void selectTab(Tab tab) { // do something } @Override public void onTabReselected(Tab tab) { if (tab.getPosition() == 0) { selectTab(tab); tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { @Override public void onTabSelected(Tab tab) { selectTab(tab); } @Override public void onTabReselected(Tab arg0) { } @Override public void onTabUnselected(Tab arg0) { } }); } } @Override public void onTabUnselected(Tab tab) { } });