如果我们想要在多个活动中添加选项卡,我们是否需要多个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) {
}
});
}
希望这将有助于〜
答
您可以使用相同的类。只要确保你的重写方法可以区分它在哪个活动中。所以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);
}
}
我在Android的新工作室,因为我初中!我想知道,我必须添加我的片段?如何??因为你的代码和我的代码几乎一样,但我试图弄清楚在哪里添加片段?在“addFragment”函数中?寻呼机类的?如果是的话那怎么样? – Uzair
从您的活动onCreate()方法中,您可以使用adapter.addFrag()方法将片段添加到viewpager >>> // 2选项卡 mAdapter.addFrag(new FragmentOne(),“ONE”); mAdapter.addFrag(new FragmentTwo(),“TWO”);请看我的回答 – FAT
谢谢你这么多。这有助于Alot! – Uzair