TabLayoutのタブをプログラムで選択するにはどうしたらいいですか?
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
選択したいタブのインデックスがわかっている場合は、次のようにします。
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
TabLayout.Tab tab = tabLayout.getTabAt(someIndex);
tab.select();
この手法は、ViewPagerを使わずにTabLayout単体で使用している場合にも有効です(これは非典型的であり、おそらく悪い習慣ですが、私はそうしているのを見たことがあります)。
これはおそらく究極の解決策ではなく、TabLayout
とViewPager
を併用する必要がありますが、これが私の解決方法です。
void selectPage(int pageIndex)
{
viewPager.setCurrentItem(pageIndex);
tabLayout.setupWithViewPager(viewPager);
}
このコードを使用することによるパフォーマンスへの影響がどれくらい大きいかを、まずこの方法を実行している間のAndroid StudioのCPUとメモリのモニターを見てテストし、次に自分でページ間を移動したとき(スワイプジェスチャーを使用したとき)にCPUとメモリにかかった負荷と比較しましたが、その差はそれほど大きくなく、少なくともひどい解決策ではありませんでした。
誰かのお役に立てれば幸いです。