J'essaie de créer une application qui a un ViewPager dans un fragment qui fait partie d'un TabHost.
Tout fonctionne bien. J'ai ma barre d'onglets, je peux changer d'onglet. Lorsque je passe à l'onglet avec le ViewPager, tout s'affiche correctement. Mais dès que je quitte cet onglet avec le ViewPager et retourne cet onglet, mon contenu n'est pas affiché. Si je défile deux fois sur le côté, je vois ma prochaine image. Et si je reviens deux fois en arrière, je vois aussi que les images sont chargées (probablement hors écran). Voyez que mon TabFragment est en train d'être rétabli quand je reviens dessus, mais pas les fragments dans le ViewPager.
J'ai inclus une maquette d'écran et une partie de mon code.
Quelqu'un peut-il aider?
À votre santé!
@Override
public void onActivityCreated(Bundle savedInstanceState) {
mProjectText = (TextView) getView().findViewById(R.id.projectText);
mProjectText.setText(mActiveProject.getInspirationText());
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
mPager = (ViewPager)getView().findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
super.onActivityCreated(savedInstanceState);
}
public class AlbumAdapter extends FragmentStatePagerAdapter {
private ArrayList<ProjectContent> mItems;
public AlbumAdapter(FragmentManager fm, ArrayList<ProjectContent> items) {
super(fm);
this.mItems = items;
}
@Override
public Fragment getItem(int position) {
return AlbumContentFragment.newInstance(mItems.get(position));
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}}
J'ai trouvé le problème. Cela m'a pris deux jours, mais bon, c'est réparé.
À la place d'utiliser
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
Tu devrais utiliser
mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration());
Voilà pour 5 personnages.
Je cherchais depuis longtemps pour trouver une solution.Changez votre instance d'adaptateur de page FragmentPagerAdapter
en FragmentStatePagerAdapter
exemple:
class PageAdapter extends FragmentStatePagerAdapter {
vous devez utiliser getChildFragmentManager()
au lieu de getFragmentManager()
et FragmentStatePagerAdapter()
au lieu de FragmentPagerAdapter()
. J'espère que cela sera utile pour quelqu'un.