Get PagerSlidingTabStrip page title onPageSelected

100 Views Asked by At

I'm trying to get the selected page title from a PagerSlidingTabStrip to display on a toast. The page titles are generated from a dynamic list. I am able to get the current page position to display on a toast using:

         tabStrip.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            Toast.makeText(getActivity(), "Page position: " + position, Toast.LENGTH_SHORT).show();


        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

How can I get the current/selected page title?

1

There are 1 best solutions below

0
nebuchadnezzar I On

Create your own adapter for the PagerSlidingTabStrip(this is a viewpager right?) that will manage the titles and also positions.

ViewPager viewPager;
ViewPagerAdapter vpAdapter;

In mainActivity

viewPager = (ViewPager) findViewById(R.id.pager);
        vpAdapter = new ViewPagerAdapter(getSupportFragmentManager(), 2, this, clock, history);

ViewPagerAdapter

public class ViewPagerAdapter extends FragmentPagerAdapter {
    private int nTabs;
    private Context context;
    private Fragment fragment1, fragment2;
    private CharSequence[] titles;

    public ViewPagerAdapter(FragmentManager fm, int nTabs, Context context, Fragment fragment1, Fragment fragment2) {
        super(fm);
        this.fragment1= fragment1;
        this.fragment2= fragment2;
        this.context =context;
        this.nTabs = nTabs;
        titles = new CharSequence[]{context.getText(R.string.Title_tab1), context.getText(R.string.Title_tab2)};
    }




    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                return fragment1;
            case 1:
                return fragment2;
            default:
                return fragment1;
        }


    }


    @Override
    public int getCount() {
        return nTabs;
    }


    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}

and don't forget to set the adapter on the viewpager

viewPager.setAdapter(vpAdapter);