OnTabSelected Seleccionado No llamado
Acabo de migrar mi antigua ActionBar
a nuevo TabLayout
(Diseño de Material de Soporte).
Todo es genial pero no puedo interceptar la selección de onTabSelected
El método onTabSelected
solo se llama la primera vez que se muestra TabLayout
, pero al hacer clic en las pestañas, ¡no pasa nada! ¿Alguna idea de lo que está mal con este código?
- TabHost definido en el diseño está dando NullPointerException durante setContent
- Forzar pestañas apiladas
- Comportamiento de desplazamiento de AppBarLayout
- Android TabView error?
- Función de parada que llama en pestañas
tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); mViewPager = (ViewPager) findViewById(R.id.pager); if (mViewPager != null) { setupViewPager(); } tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { numTab = tab.getPosition(); prefs.edit().putInt("numTab", numTab).apply(); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); tabLayout.setupWithViewPager(mViewPager);
- Número de pestañas en ActionBar
- Cómo establecer el nombre de las pestañas en minúsculas LIke que quiero en Android
- Tabulaciones de Android sin iconos
- ¿Cómo puedo quitar el divisor entre el ActionBar y las pestañas
- Google Map no se muestra en la actividad de la pestaña
- carga diferentes actividades en pestañas
- El tipo ActionBar.Tab está obsoleto
- Ciclo de vida del fragmento Android
Cuando llama a setupWithViewPager
, esto llamará internamente setOnTabSelectedListener(new ViewPagerOnTabSelectedListener(viewPager));
, OnTabSelectedListener
su OnTabSelectedListener
.
En su lugar, su oyente debe extender TabLayout.ViewPagerOnTabSelectedListener , a continuación, sobreescribir onTabSelected()
y llamar a setOnTabSelectedListener()
después de setupWithViewPager()
:
tabLayout.setupWithViewPager(mViewPager); tabLayout.setOnTabSelectedListener( new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) { @Override public void onTabSelected(TabLayout.Tab tab) { super.onTabSelected(tab); numTab = tab.getPosition(); prefs.edit().putInt("numTab", numTab).apply(); } });
Aquí hay un ejemplo algo más completo con tres pestañas. Utiliza la nueva add OnTabSelectedListener
lugar de set OnTabSelectedListener
.
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); final PagerAdapter adapter = new PagerAdapter (getSupportFragmentManager(), tabLayout.getTabCount()); viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); Log.i("TAG", "onTabSelected: " + tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { Log.i("TAG", "onTabUnselected: " + tab.getPosition()); } @Override public void onTabReselected(TabLayout.Tab tab) { Log.i("TAG", "onTabReselected: " + tab.getPosition()); } });
Notas:
-
onTabSelected
yonTabUnselected
se llaman cada vez que hay un cambio en las pestañas. -
onTabReselected
se llama cada vez que se hace clic en una pestaña mientras se está mostrando.
- Android Studio SDK administrado deshabilitado
- Combinando wrap_content en el padre y fill_parent en el niño