1

I have 3 tabs containing difference Fragments as:

  1. Product and Services
  2. Business Directory
  3. Job

Bellow is my TabFragement Adapter The code is worked correctly but only 1 thing I want is: => I want to set Job Fragment as default in onCreate

enter image description here

This is my adapter.

public class TabFragment extends Fragment {
    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 3 ;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View x =  inflater.inflate(R.layout.tab_layout,null);
        tabLayout = (TabLayout) x.findViewById(R.id.tabs);
        viewPager = (ViewPager) x.findViewById(R.id.viewpager);

        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));

        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                tabLayout.setupWithViewPager(viewPager);
            }
        });

        return x;

    }

    class MyAdapter extends FragmentPagerAdapter{

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position)
        {
            switch (position){
                case 0 : return new Product_Service();
                case 1 : return new Business_Dir();
                case 2 : return new Job();
            }
            return null;
        }

        @Override
        public int getCount() {

            return int_items;
        }

        @Override
        public CharSequence getPageTitle(int position) {

            switch (position){
                case 0 :
                    return "Product & Srevices";
                case 1 :
                    return "Business Directory";
                case 2 :
                    return "Job";
            }
            return null;
        }
    }
}
Pavneet_Singh
  • 36,884
  • 5
  • 53
  • 68
Preap San
  • 105
  • 13

1 Answers1

3

You can use the fragment position index to show particular fragment as default using setCurrentItem method ofViewPager docs. Do this after setting adapter on viewpager

viewPager.setCurrentItem(2, false); // job fragment index is 2

false here mean , the transition to fragment 3 will be done instantly and if you pass true then chosen fragment will be displayed using scrolling effects ( you can use true when you want to give a little tour to user for first time)

Pavneet_Singh
  • 36,884
  • 5
  • 53
  • 68
  • Thanks Pavneet Singh, Your answer are work, but when I try to use it in main activity it geting error, HERE IS MY CODE `mFragmentManager = getSupportFragmentManager(); mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit();TabFragment.viewPager.setCurrentItem(2, false); // job fragment index is 2` – Preap San Sep 19 '16 at 06:49
  • you can update your question with code of `mainactivity` plus add the logcat error too – Pavneet_Singh Sep 19 '16 at 06:58
  • seems like error is `TabFragment.viewPager.setCurrentItem‌​(2, false)` you are doing this too early i.e. your fragment and tab is not ready to use ,so put this line after this `tabLayout.setupWithViewPage` – Pavneet_Singh Sep 19 '16 at 07:05