Search code examples
javaandroidandroid-fragmentsandroid-viewpagerandroid-tabbed-activity

I want to show 3 different fragments for 3 different tabs in view-pager ,Tabbed activity Android


I am very new to android , this time i created a view-pager tabbed activity by looking a video tutorial. the problem or the need is to show 3 different fragments if the user slides the position like tab1(shows first fragment),tab2 (shows second fragment) tab3 (shows third fragment) Now it is showing one and only fragment for all tabs

this is my adapter class named datafragment package com.example.jaison.news;

public class datafragment extends Fragment {
View view;
ViewPager viewPager;
TabLayout tabLayout;


@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view= inflater.inflate(R.layout.sample,container,false);


    viewPager = (ViewPager) view.findViewById(R.id.viewpager);
    viewPager.setAdapter(new sliderAdapter(getChildFragmentManager()));
    tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
    tabLayout.post(new Runnable() {
        @Override
        public void run() {
            tabLayout.setupWithViewPager(viewPager);
        }
    });

    return view;

}




private class sliderAdapter extends FragmentPagerAdapter{

    final  String tabs[]={"tab1", "tab2","tab3"};
    public sliderAdapter(FragmentManager fm) {
        super(fm);
    }


    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;

        return fragment;
    }


    @Override
    public int getCount() {


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




 }

for those who did not get my point , all i need is implement the code something just like this, but i am not sure about this..

        switch (position) {
            case 0:

                //showing first fragment


            case 1: 

                    //showing second fragment


            case 2:
                //showing third fragment
            default:
                return new Fragment();
        }

Solution

  • change your getItem method like this

     @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        switch (position){
            case 0:
                fragment = new Tab1Fragment();
                break;
            case 1:
                fragment = new Tab2Fragment();
                break;
           case 2:
                fragment = new Tab3Fragment();
                break;
        }
        return fragment;
    }