如果我们想要在多个活动中添加选项卡,我们是否需要多个Pager(viewpager)类?

问题描述:

我必须制作包含3项活动的项目。第一和第二项活动由2个选项卡组成,而第三项活动需要3个选项卡。我是否需要为每个活动制作3个传呼机类别?或者如果一个Pager.class可以处理所有选项卡,那么我们可以如何排序? 感谢所有提前!如果我们想要在多个活动中添加选项卡,我们是否需要多个Pager(viewpager)类?

您可以使用相同的PagerAdapter类。以下是一个样本PagerAdapter

TabsPagerAdapter.java

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

import java.util.ArrayList; 
import java.util.List; 

public class TabsPagerAdapter extends FragmentPagerAdapter { 

    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

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

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

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

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

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

从你FirstActivity.java

TabLayout mTabLayout; 
ViewPager mViewPager; 
TabsPagerAdapte mAdapter; 

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

    // Tab layout 
    mTabLayout = (TabLayout) findViewById(R.id.tabs); 

    // View pager 
    mViewPager = (ViewPager) findViewById(R.id.view_pager); 

    // Adapter 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    // 2 Tabs 
    mAdapter.addFrag(new FragmentOne(), "ONE"); 
    mAdapter.addFrag(new FragmentTwo(), "TWO"); 

    mViewPager.setAdapter(mAdapter); 

    mTabLayout.setupWithViewPager(mViewPager); 
    mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 

      mViewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
} 

从你SecondActivity.java

TabLayout mTabLayout; 
ViewPager mViewPager; 
TabsPagerAdapte mAdapter; 

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

    // Tab layout 
    mTabLayout = (TabLayout) findViewById(R.id.tabs); 

    // View pager 
    mViewPager = (ViewPager) findViewById(R.id.view_pager); 

    // Adapter 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    // 2 Tabs 
    mAdapter.addFrag(new FragmentOne(), "ONE"); 
    mAdapter.addFrag(new FragmentTwo(), "TWO"); 

    mViewPager.setAdapter(mAdapter); 

    mTabLayout.setupWithViewPager(mViewPager); 
    mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 

      mViewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
} 

从你ThirdActivity.java

TabLayout mTabLayout; 
ViewPager mViewPager; 
TabsPagerAdapte mAdapter; 

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

    // Tab layout 
    mTabLayout = (TabLayout) findViewById(R.id.tabs); 

    // View pager 
    mViewPager = (ViewPager) findViewById(R.id.view_pager); 

    // Adapter 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    // 3 Tabs 
    mAdapter.addFrag(new FragmentOne(), "ONE"); 
    mAdapter.addFrag(new FragmentTwo(), "TWO"); 
    mAdapter.addFrag(new FragmentThree(), "THREE"); 

    mViewPager.setAdapter(mAdapter); 

    mTabLayout.setupWithViewPager(mViewPager); 
    mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 

      mViewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
} 

希望这将有助于〜

+0

我在Android的新工作室,因为我初中!我想知道,我必须添加我的片段?如何??因为你的代码和我的代码几乎一样,但我试图弄清楚在哪里添加片段?在“addFragment”函数中?寻呼机类的?如果是的话那怎么样? – Uzair

+0

从您的活动onCreate()方法中,您可以使用adapter.addFrag()方法将片段添加到viewpager >>> // 2选项卡 mAdapter.addFrag(new FragmentOne(),“ONE”); mAdapter.addFrag(new FragmentTwo(),“TWO”);请看我的回答 – FAT

+0

谢谢你这么多。这有助于Alot! – Uzair

您可以使用相同的类。只要确保你的重写方法可以区分它在哪个活动中。所以getCount()FragmentPagerAdapter作为一个例子会在你的第一和第二个活动中返回两个,而在第三个活动中返回三个。布局也一样。

是的,你可以为每个活动使用这个pageradapter类。它会创建您想要的活动的大小

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

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

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

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

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

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