Hvordan velger jeg en fane i TabLayout programmatisk?
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
Hvis du kjenner indeksen til fanen du vil velge, kan du gjøre det slik:
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
TabLayout.Tab tab = tabLayout.getTabAt(someIndex);
tab.select();
Denne teknikken fungerer selv om du bruker TabLayout alene uten ViewPager (noe som er atypisk og sannsynligvis dårlig praksis, men jeg har sett det gjort).
Dette er nok ikke den ultimate løsningen, og det krever at du bruker TabLayout
sammen med en ViewPager
, men det var slik jeg løste det:
void selectPage(int pageIndex)
{
viewPager.setCurrentItem(pageIndex);
tabLayout.setupWithViewPager(viewPager);
}
Jeg testet hvor stor ytelsespåvirkningen ved å bruke denne koden er ved først å se på CPU- og minnemonitorene i Android Studio mens jeg kjørte metoden, og deretter sammenligne med belastningen på CPU og minne når jeg navigerte mellom sidene selv (ved hjelp av sveipebevegelser), og forskjellen er ikke nevneverdig stor, så det er i hvert fall ikke en forferdelig løsning...
Håper dette hjelper noen!