FragmentPagerAdapter getItem n'est pas déclenché

Actuellement, avec un FragmentActivity, je bascule entre les 2 type de Fragments en utilisant le code suivant.

private void toggle() {
    Fragment oldFragment = getSupportFragmentManager().findFragmentById(R.id.content);
    Fragment fragment = null;
    if (oldFragment instanceof ColorFragment) {
        fragment = new ViewPagerFragment();
    } else {
        fragment = new ColorFragment(android.R.color.black);
    }

    getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commitAllowingStateLoss();
}

2 Fragments sont en train de basculer.

  • ColorFragment - Un simple fragment qui remplissent ses arrière-plan avec des aplats de couleur noire.
  • ViewPagerFragment - Un fragment contient ViewPager. L'utilisateur peut glisser entre un pourpre couleur de fragment, et d'une couleur bleu fragment.

Le code de la responsable de balayage violet et bleu de la couleur des fragments sont comme ci-dessous.

private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {

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

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0:
            return new ColorFragment(android.R.color.holo_purple);
        default:
            return new ColorFragment(android.R.color.holo_blue_bright);
        }
    }      
} 

Cependant, je rencontre l'étrange comportement pendant le basculement.

  1. Couleur noire fragment a été montré.
  2. Basculement.
  3. Vue de radiomessagerie, qui peut glisser entre le violet et le bleu des fragments montré.
  4. Basculement.
  5. Couleur noire fragment a été montré.
  6. Basculement.
  7. Rien montré, comme MyFragmentPagerAdapter de getItem n'est pas déclenché.

Je pense que ma situation est similaire à FragmentPagerAdapter getItem n'est pas appelé

Cependant, je préfère ne pas utiliser de FragmentStatePagerAdapter, en raison de le coût potentiellement plus généraux lors de la commutation entre les pages.

Aucune solution de contournement pour résoudre ce problème?

- Je inclure une complète réalisable code source pour illustrer ce problème : https://www.dropbox.com/s/jok9tz5ktvfcteo/viewpagerbug.zip

  • Je préfère ne pas utiliser de FragmentStatePagerAdapter - eh bien, avez-vous au moins essayé de voir si cela fait une différence? en raison du coût de potentiellement plus de surcharge lors de la commutation entre les pages. - ce que potentiellement le dessus? le scénario que vous avez posté avec deux fragments est mort simple.
  • Le 2 violet et bleu de la couleur des fragments à des fins de démonstration. Le cas réels fragments sont plus compliquées que cela. Je sais que je peux réduire étendre certaines de surcharge, par la sauvegarde de l'information par le biais de bundle, ou conservés exemple de fragment de technique. cependant, je me rends compte que le meilleur moyen pour éviter la surcharge pour mon cas, est d'éviter d'utiliser FragmentStatePagerAdapter.