Nima Khalili
Nima Khalili

Reputation: 414

ViewPagerFragment Tab doesn't Work

i create a viewPager and is work , my problem is for select a page i just can drag page but I want to click on the tabs to select the pages .

also i add (compile 'com.android.support:design:26.0.0-alpha1')

enter image description here

my codes for FragmentPagerAdapter

public class Pager extends FragmentPagerAdapter {

public Pager(FragmentManager fm) {

    super(fm);
}

@Override
public Fragment getItem(int position) {

    switch (position)
    {
        case 0:
            return First_Activity.newInstance();

        case 1:
            return Second_Activity.newInstance();

        case 2:
            return Third_Activity.newInstance();

        default:
            return First_Activity.newInstance();
    }
}

@Override
public int getCount() {

    return 3;
}

//  --->>>Title Pages<<<---
@Override
public CharSequence getPageTitle(int position) {

    switch (position)
    {
        case 0:
            return " page 1 ";

        case 1:
            return " page 2 ";

        case 2:
            return " page 3 ";

        default:
            return "";
    }

}
}

my codes for MainActivity

    final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    Pager adapter = new Pager(getSupportFragmentManager());
    viewPager.setAdapter(adapter);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
    tabLayout.setupWithViewPager(viewPager);

}
}

Upvotes: 0

Views: 48

Answers (1)

Ankit Patidar
Ankit Patidar

Reputation: 2781

First declare this line in onCreate():

   viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

Here , tabLayout is layout of your tabs you created in layout.

Now add this function:

   TabLayout.OnTabSelectedListener tabListener = new TabLayout.OnTabSelectedListener() 
  { 
      @Override
      public void onTabSelected(TabLayout.Tab tab)           
      { 
           viewPager.setCurrentItem(tab.getPosition()); 
      } 
      @Override 
      public void onTabUnselected(TabLayout.Tab tab) 
      { } 
      @Override 
      public void onTabReselected(TabLayout.Tab tab)
      { } 
 };

This code will work for you surely.

Upvotes: 1

Related Questions