How do I use FragmentPagerAdapter to have tabs with different content?

前端 未结 4 1296
迷失自我
迷失自我 2020-12-04 10:29

I want to have different tabs, where you can swipe through like in the android market. Each tab should use one fragment and use one method for it.

This is my Fragmen

4条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-04 11:01

    Create the adapter:

    class MyPagerAdapter extends FragmentPagerAdapter {
            public List fragmentsA; 
    
            public MyPagerAdapter(FragmentManager fm) {
                super(fm);
                fragmentsA = fragments;
            }
    
            @Override
            public Fragment getItem(int position) {
                //return MyFragment.newInstance();
                return Fragment.instantiate(context, fragmentsA.get(position));
    
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                //return CONTENT[position % CONTENT.length].toUpperCase();
                return mEntries.get(position % CONTENT.length).toUpperCase();
            }
    
            @Override
            public int getCount() {
               // return CONTENT.length;
                return mEntries.size();
            }
    
            @Override
            public int getItemPosition(Object object) {
                return POSITION_NONE;
            }
        }
    

    Each fragment belongs to different classes.

    So you have to define a fragment list (These go to the main FragmentActivity) :

    static MyPagerAdapter adapter;
    

    and fill it with the fragments:

    fragments.add(ConnectionFragment.class.getName());
    fragments.add(DataFragment.class.getName());
    fragments.add(Tab3.class.getName());
    //..etc
    

    Then you have to add the fragments to the adapter like this:

     pager = (ViewPager)findViewById(R.id.viewpager);
     adapter = new MyPagerAdapter(getSupportFragmentManager());
     pager.setAdapter(adapter);
    

    The MyPagerAdaper will go through all the fragments contained by the fragments list, then it will instantiate each of them.

提交回复
热议问题