it-swarm.com.de

Wie erhalte ich den aktuell ausgewählten Tab-Index in TabLayout

Wenn ich ActionBar-Registerkarten verwende, verwende ich diesen Code.

private int getCurrentTabIndex() {
    ActionBar actionBar = activity.getSupportActionBar();
    ActionBar.Tab selectedTab = actionBar.getSelectedTab();
    if(selectedTab == null){
        return 0;
    }

    return selectedTab.getPosition();
}

Aber wie kann ich das mit TabLayout machen?

21

Verwenden Sie OnTabSelectedListener .

Und dann in diesem Listener die getPosition() .

Etwas wie das:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
    @Override
    public void onTabSelected(TabLayout.Tab tab){
        int position = tab.getPosition();
    }
});

UPDATE

Diese Methode setOnTabSelectedListener() ist veraltet. Verwenden Sie addOnTabSelectedListener(OnTabSelectedListener)

51
JARP

setOnTabSelectedListener ist jetzt veraltet. Sie können stattdessen addOnTabSelectedListener verwenden. Um den Listener zu entfernen, können Sie removeOnTabSelectedListener verwenden.

 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) {
        }
    });
31
DoronK

Sie können dies einfach tun, indem Sie getSelectedTabPosition() in Ihrer TabLayout-Instanz aufrufen:

int tab_position=tabLayout.getSelectedTabPosition();
13
swanand keskar

wenn Sie tabs mit viewpager verwenden, kann die angeforderte Aufgabe folgendermaßen ausgeführt werden:

verwenden Sie den folgenden Code nach 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);
    }
});
0
Juni

Wenn Sie TabLayout in ViewPager verwenden (und es mit setupWithViewPager() initialisieren), können Sie dies mit der ViewPager-Instanz tun.

    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
0
B-GangsteR