moji
moji

Reputation: 63

how can i use 3 fragment in a sliding tab layout with 3 tabs

I want to make an activity that have a toolbar on top and below the toolbar there is an sliding tablayout with 3 tabs. i want to use a fragment in each tab. like this:

fragment 1 inside tab1
fragment 2 inside tab2
fragment 3 inside tab3

how can i define it.

my own pagerAdapter code with 3 different fragment is below but i don't know is it correct or not:

    class MyPagerAapter extends FragmentPagerAdapter {
        String[] tabs;
        public MyPagerAapter(FragmentManager fm) {
            super(fm);
            //tabs = getResources().getStringArray(R.array.tabs);
            tabs = new String[]{"پیامهای دریافتی", "پیامهای ارسالی", "ارسال پیام"};
        }
        @Override
        public Fragment getItem(int position) {
            Fragment myFragment=null;
            if (position == 0) {
                myFragment = MyFragment0.getInstance(0);
            }
            if (position == 1) {
                myFragment = MyFragment1.getInstance(1);
            }
            if (position == 2) {
                myFragment = MyFragment2.getInstance(2);
            }
            return myFragment;
        }
        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }
        @Override
        public int getCount() {
            return 3;
        }
    }
    public static class MyFragment0 extends Fragment {
        private TextView textView;
        public static MyFragment0 getInstance(int position) {
            MyFragment0 myFragment = new MyFragment0();
            Bundle args = new Bundle();
            args.putInt("position", position);
            myFragment.setArguments(args);
            return myFragment;
        }
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View layout = inflater.inflate(R.layout.fragment_one, container, false);
            textView = (TextView) layout.findViewById(R.id.position);
            Bundle bundle = getArguments();
            if (bundle != null) {
                textView.setText("The Page Selected Is 0000000" + bundle.getInt("position"));
            }
            return layout;
        }
    }
    public static class MyFragment1 extends Fragment {
        private TextView textView;
        public static MyFragment1 getInstance(int position) {
            MyFragment1 myFragment = new MyFragment1();
            Bundle args = new Bundle();
            args.putInt("position", position);
            myFragment.setArguments(args);
            return myFragment;
        }
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View layout = inflater.inflate(R.layout.fragment_two, container, false);
            textView = (TextView) layout.findViewById(R.id.position);
            Bundle bundle = getArguments();
            if (bundle != null) {
                textView.setText("The Page Selected Is 1111111" + bundle.getInt("position"));
            }
            return layout;
        }
    }
    public static class MyFragment2 extends Fragment {
        private TextView textView;
        public static MyFragment2 getInstance(int position) {
            MyFragment2 myFragment = new MyFragment2();
            Bundle args = new Bundle();
            args.putInt("position", position);
            myFragment.setArguments(args);
            return myFragment;
        }
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View layout = inflater.inflate(R.layout.fragment_three, container, false);
            textView = (TextView) layout.findViewById(R.id.position);
            Bundle bundle = getArguments();
            if (bundle != null) {
                textView.setText("The Page Selected Is 22222222" + bundle.getInt("position"));
            }
            return layout;
        }
    }
}

Upvotes: 0

Views: 617

Answers (1)

Aditya Vyas-Lakhan
Aditya Vyas-Lakhan

Reputation: 13555

This is what exactly you looking for

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

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

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new OneFragment(), "ONE");
        adapter.addFragment(new TwoFragment(), "TWO");
        adapter.addFragment(new ThreeFragment(), "THREE");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
}

Upvotes: 1

Related Questions