2017-09-15 105 views
0

我有一个viewPager,它包含3个标签片段。 第一个和第二个片段工作正常,但当我扫到第三个标签 我没有看到他。 第三个选项卡仅当viewPager的活动重新加载时才显示(移动到另一个活动并返回)。Android - ViewPager第三个标签页没有显示

我的代码:

private void setupViewPager(ViewPager viewPager) { 
    adapter = new PagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new Fragment1(), Constants.TAB_0); 
    adapter.addFragment(new Fragment2(), Constants.TAB_1); 
    adapter.addFragment(new Fragment3(), Constants.TAB_2); 

    viewPager.setAdapter(adapter); 

    viewPager.setOffscreenPageLimit(3); 
} 

寻呼机适配器:

public class PagerAdapter extends FragmentPagerAdapter { 
/* 
* Arraylist used to contain the fragments 
* and contain fragments title's 
*/ 
private final List<Fragment> fragmentList = new ArrayList<>(); 
private final List<String> fragmentTitleList = new ArrayList<>(); 

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

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

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

//Adds the fragment and it's title. Called in MainActivity 
public void addFragment(Fragment fragment, String title) { 
    fragmentList.add(fragment); 
    fragmentTitleList.add(title); 
} 

//Retrieves the title of the tab 
@Override 
public CharSequence getPageTitle(int position) { 
    return fragmentTitleList.get(position); 
} 

@Override 
public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

}

+1

'viewPager.setOffscreenPageLimit(2);' –

+0

仍然不起作用 –

回答

1

这里是我的适配器上的getItem我设置片段对象的片段活动。

public class SectionPagerAdapter extends FragmentPagerAdapter { 

    Fragment fragment; 

    public SectionPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 


    @Override 
    public Fragment getItem(int position) { 

     if (position == 0){ 
      fragment = new FragmentOne(); 
     } 

     else if (position == 1){ 
      fragment = new FragmentTwo(); 
     } 

     else if (position == 2){ 
      fragment = new FragmentThree(); 
     } 

     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "name one"; 
      case 1: 
       return "name two"; 
      case 2: 
       return "name three"; 
     } 
     return null; 

    } 

} 

然后在我的主要活动我叫它像这样:

ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
SectionPagerAdapter sectionPagerAdapter = new SectionPagerAdapter(getSupportFragmentManager()); 
mViewPager.setAdapter(sectionPagerAdapter); 


TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
tabLayout.setupWithViewPager(mViewPager); 

尝试用上述更换你的代码,让我知道,如果有帮助!

+0

这是否适合您? @stav elmashally –

+0

我试过了,仍然没有改变 –

0

使用new PagerAdapter(getChildSupportFragmentManager());,而不是getSupportFragmentManager()

试试这个!