【发布时间】:2018-10-13 17:17:02
【问题描述】:
如果我将TabLayout 与FragmentPagerAdapter 一起使用,则被覆盖的函数getItem(int position) 只返回一个片段。如果屏幕较大,我希望退回 2 个片段。
我该怎么做?应该将这两个片段包装成一个片段并改用它还是有更好的解决方案?
FragmentPagerAdapter:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: //Ingredients
return IngredientsFragment.newInstance(mRecipe);
case 1: // Details
{
// TODO Here instead of DetailFragment I want to return
// two fragments called DetailFragment and StepFragment.
return DetailFragment.newInstance(mRecipe);
}
default:
throw new RuntimeException(this.toString() + " Wrong fragment!");
}
}
然后在我的 Activity onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
// Initializing, etc.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = findViewById(R.id.tabs);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
}
【问题讨论】:
-
我认为返回一个包裹另外两个的片段是明智的解决方案
标签: android android-fragments android-tablayout fragmentpageradapter