2017-09-15 3 views
0

J'ai un viewPager qui contient 3 fragments d'onglets. le premier et le deuxième fragments fonctionne bien, mais quand je balaie le troisième onglet je ne le vois pas. le troisième onglet n'a été affiché que lorsque l'activité avec viewPager a rechargé (passer à une autre activité et revenir).Android - ViewPager troisième onglet n'a pas montré

mon code:

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); 
} 

adaptateur téléavertisseur:

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

ne fonctionne toujours pas –

Répondre

1

Voici mon adaptateur, sur getItem je mets l'objet fragment à l'activité de fragment.

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; 

    } 

} 

Puis, dans mon activité principale je l'appelle comme ceci:

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); 

Essayez de remplacer votre code avec ci-dessus et laissez-moi savoir si ça aide!

+0

Cela a-t-il fonctionné pour vous? @stav elmashally –

+0

J'ai essayé et encore ça n'a pas changé –

0

UTILISATIONnew PagerAdapter(getChildSupportFragmentManager());au lieu degetSupportFragmentManager()

Essayez celui-ci !!