我必须制作包含3项活动的项目。第一和第二项活动由2个选项卡组成,而第三项活动需要3个选项卡。我是否需要为每个活动制作3个传呼机类别?或者如果一个Pager.class可以处理所有选项卡,那么我们可以如何排序? 感谢所有提前!如果我们想要在多个活动中添加选项卡,我们是否需要多个Pager(viewpager)类?
0
A
回答
0
您可以使用相同的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
您可以使用相同的类。只要确保你的重写方法可以区分它在哪个活动中。所以getCount()
在FragmentPagerAdapter
作为一个例子会在你的第一和第二个活动中返回两个,而在第三个活动中返回三个。布局也一样。
0
是的,你可以为每个活动使用这个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);
}
}
相关问题
- 1. 我们能否用在多个活动
- 2. 当我们需要多个EntityManager?
- 3. xcdatamodel的多个版本是否意味着我们需要多个xcmappingmodel文件?
- 4. 我们为什么要使用`realloc`如果我们需要一个'TMP buffer`
- 5. 如果我们正在同步读取,我们是否需要同步写入?
- 6. 如果我们在docker上使用wordpress,我们是否需要安装apache&PHP?
- 7. 为什么我们需要Android项目的多个清单?
- 8. 我们是否需要在heroku上添加security.yml进行部署?
- 9. 我们是否需要同步add()方法这个类?
- 10. 如果我只需要1个物业(目前),我是否需要一个类?
- 11. 我们是否需要为每个用户启动卡夫卡,如果以root身份启动
- 12. 当我们移动到下一个标签页时,jquery ui选项卡需要清空前一个选项卡
- 13. 如果我们使用ForkJoinPool框架的Recursiveaction,我们是否需要调用join()?
- 14. 我们是否需要更新Orbeon?
- 15. 我需要多个结果集在JSP
- 16. 当我们使用xchg时,我们是否需要防护
- 17. 我们需要多少个字符来指定一个位置?
- 18. 我们是否需要在类中声明变量?
- 19. 我不想要我的活动的多个实例
- 20. 我们是否需要每个源目录中的sconscript文件
- 21. SQL Server的外键:如果我们要合并多个值
- 22. 如何从引导我们需要为我们的项目
- 23. 如果我想从AsyncTask访问它们,是否需要复制静态对象?
- 24. 什么父项目我们需要在多模块应用
- 25. 我们需要在jQuery的
- 26. 我们真的需要类来实现Java中的多态吗?
- 27. 想我需要一个自我加入?
- 28. 如果在azure中使用多个实体模型,我们需要使用SqlAzureExecutionStrategy的多个配置吗?
- 29. 为什么我们真的需要多个netty boss线程?
- 30. 我需要在Select2中添加“添加新项目”选项
我在Android的新工作室,因为我初中!我想知道,我必须添加我的片段?如何??因为你的代码和我的代码几乎一样,但我试图弄清楚在哪里添加片段?在“addFragment”函数中?寻呼机类的?如果是的话那怎么样? – Uzair
从您的活动onCreate()方法中,您可以使用adapter.addFrag()方法将片段添加到viewpager >>> // 2选项卡 mAdapter.addFrag(new FragmentOne(),“ONE”); mAdapter.addFrag(new FragmentTwo(),“TWO”);请看我的回答 – FAT
谢谢你这么多。这有助于Alot! – Uzair