ActionBarタブを使用するときは、このコードを使用します。
private int getCurrentTabIndex() {
ActionBar actionBar = activity.getSupportActionBar();
ActionBar.Tab selectedTab = actionBar.getSelectedTab();
if(selectedTab == null){
return 0;
}
return selectedTab.getPosition();
}
しかし、どのようにTabLayoutを使用してそれを行うことができますか?
OnTabSelectedListener を使用します。
そして、このリスナーで getPosition()
を取得します。
このようなもの:
_tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
@Override
public void onTabSelected(TabLayout.Tab tab){
int position = tab.getPosition();
}
});
_
[〜#〜] update [〜#〜]
このメソッドsetOnTabSelectedListener()
は非推奨です。 addOnTabSelectedListener(OnTabSelectedListener)
を使用します
setOnTabSelectedListenerは非推奨になりました。代わりにaddOnTabSelectedListenerを使用できます。リスナーを削除するには、removeOnTabSelectedListenerを使用します
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
int position = tab.getPosition();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
TabLayout
インスタンスでgetSelectedTabPosition()
を呼び出すことで簡単に実行できます:
int tab_position=tabLayout.getSelectedTabPosition();
tabsとviewpagerを使用している場合、要求されたタスクは次のように実行できます。
tabLayout.setUpWithViewPager(viewPager)
の後に次のコードを使用します
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
switch(tab.getPosition()){
// do something here
}
super.onTabSelected(tab);
}
});
TabLayout
内でViewPager
を使用している場合(およびsetupWithViewPager()
で初期化する場合)、ViewPagerインスタンスを使用して実行できます。
View view = inflater.inflate(R.layout.fragment_view_pager_tabs, container, false);
ViewPager viewPager = view.findViewById(R.id.view_pager_tabs);
viewPager.setAdapter(pagerAdapter);
TabLayout tabLayout = viewPager.findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
int item = viewPager.getCurrentItem(); // get
viewPager.setCurrentItem(item, true); // set