Android FragmentStatePagerAdapter renvoie l'écran vide lors du rechargement des fragments du milieu

J'essaie de créer une application avec 4 onglets en utilisant FragmentStatePagerAdapter et un ViewPager.

Lorsque je lance l'application pour la première fois et si je sélectionne les onglets dans l'ordre (0 à 3), tout va bien, alors si j'essaie d'effectuer le retour (3 à 0), l'onglet 1 montre un écran vierge si, après, je Sélectionnez l'onglet 2, puis est vide aussi, si je passe à l'onglet 0 et fais le chemin à nouveau l'onglet 2 à la vie et parfois l'onglet 1 retour à la vie mais je n'ai pas trouvé de séquence …

  • Android: Comment puis-je obtenir une chaîne de ressources à l'aide de son nom?
  • Musique de fond Android
  • Problème avec le chargement de fichiers javascript locaux dans une vue web
  • Comment configurer des images dymanic sur ViewFlipper dans Android?
  • Comment générer google-services.json pour le projet Google Android existant?
  • Android: inputType = "textEmailAddress" - '@' et une touche '.com'?
  • Je sais que c'est un gâchis … Le but est que l'onglet 1 est utilisé pour échouer, l'onglet 2 échoue parfois et les onglets 0 et 3 fonctionnent bien toujours. Si j'échoue sur la position des fragments, tout est pareil, certains pensent qu'il n'est pas lié au code des fragments …

    Il n'y a pas d'erreur dans le logcat, le débogage des fragments montre que tout se passe dans la manière dont il devrait être …

    J'ai essayé quelque temps de le résoudre sans trop de chance (évidemment …), j'ai essayé de remplacer getItemPosition () pour retourner POSITION_NONE, j'ai essayé de faire mon propre FragmentStatePagerAdapter comme ici, disons http: // speakman .net / blog / 2014/02/20 / a-bug-in-and-a-fix-for-the-way-fragmentstatepageradapter-handles-fragment-restoration / mais rien … Et d'autres choses qui ne font pas de paradis J'ai travaillé pour moi.

    Un certain code: Classe principale

    public class Main extends FragmentActivity implements ActionBar.TabListener { private MyPageAdapter mPagerAdapter; private ViewPager mPager; @Override protected void onCreate(Bundle si) { super.onCreate(si); setContentView(R.layout.activity_main); init(); } private void init() { final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); if (mPagerAdapter == null) { mPagerAdapter = new PaginaAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.pager); mPager.setAdapter(mPagerAdapter); mPager.requestTransparentRegion(mPager); mPager.setOnPageChangeListener(new viewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); // Tab creation for (int i = 0; i < mPagerAdapter.getCount(); i++) { View tabView = getLayoutInflater().inflate(R.layout.tab, null); ((ImageView) tabView.findViewById(R.id.tabIcon)) .setImageDrawable(getResources().getDrawable(mPagerAdapter.getIcon(i))); actionBar.addTab(actionBar.newTab().setCustomView(tabView).setTabListener(this)); } } } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { mPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { } 

    Adaptateur

     public class MyPageAdapter extends FragmentStatePagerAdapter { public MyPageAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment = null; switch (position) { case 0: fragment = new InitFragment(); break; case 1: fragment = new MusicFragment(); break; case 2: fragment = new VideoFragment(); break; case 3: fragment = new PicFragment(); break; } return fragment; } @Override public int getCount() { return 4; } .... } 

    Merci.

    MISE À JOUR: Mes fragments sont dans des classes séparées et ne sont pas statiques, est-ce important? Une autre chose que je viens de réaliser, c'est qu'il semble détruire le fragment après avoir touché l'onglet, car si je glisse lentement, je vois le fragment mais, tout à coup, tout disparaît

  • Android Studio continue d'obtenir une version Major.minor non prise en charge 52.0
  • Comment utiliser Youtube Player avec une interface utilisateur moderne dans Android avec YoutubePlayerSupportFragment
  • Est-il nécessaire d'utiliser super.onActivityResult () dans onActivityResult ()?
  • Android: comment créer une image de carte cliquable avec chaque pays produisant une action différente?
  • Model-View-Presenter et Android Application Design
  • Espace de la galerie au début et à la fin
  • 2 Solutions collect form web for “Android FragmentStatePagerAdapter renvoie l'écran vide lors du rechargement des fragments du milieu”

    Je vous suggère d'utiliser FragmentPagerAdapter au lieu de FragmentStatePagerAdapter . Il semble que vous voulez seulement avoir 3 Tabs et un Fragment pour chacun, ce qui ne semble pas trop intensif en mémoire (tant qu'ils ne sont pas pleins de Bitmaps , etc.). Lorsque vous utilisez FragmentStatePagerAdapter vous êtes responsable de restaurer l'état de chaque Fragment lorsqu'il est rechargé, avec FragmentPagerAdapter le système persiste dans la hiérarchie View , ce que vous voulez.

    Essayez cette utilisation FragmentPagerAdapter

     MyPageAdapter .java public class MyPageAdapter extends FragmentPagerAdapter { public MyPageAdapter (FragmentManager fm) { super(fm); } @Override public Fragment getItem(int index) { switch (position) { case 0: fragment = new InitFragment(); break; case 1: fragment = new MusicFragment(); break; case 2: fragment = new VideoFragment(); break; case 3: fragment = new PicFragment(); break; } return null; } @Override public int getCount() { // get item count - equal to number of tabs return 4; } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.