Search code examples
androidandroid-fragmentactivity

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);

}
}

Solution

  • 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.