2016-09-10 1 views
1

Ich habe eine Aktivität namens MainActivity, die einen ViewPager und ein TabLayout hat. Der ViewPager hat 4 (vier) Fragmente, die dort gebunden sind. Ich habe ein Problem über (vielleicht) FragmentStatePagerAdapterFragmentStatePagerAdapter gibt falsche Position zurück, aber das rechte Fragment

ich meinen Code laufen

public class MainPagerAdapter extends FragmentStatePagerAdapter { 

    Fragment[] fragments; 

    public MainPagerAdapter(FragmentManager fm) { 
     super(fm); 
     fragments = new Fragment[]{ 
       new FragProfile(), 
       new FragScore(), 
       new FragMoney(), 
       new FragOther() 
     }; 
    } 

    @Override 
    public Fragment getItem(int p) { 
     Log.w("Fragment", String.valueOf(p)); 

     switch (p){ 
      case 0: 
       return fragments[0]; 
      case 1: 
       return fragments[1]; 
      case 2: 
       return fragments[2]; 
      case 3: 
       return fragments[3]; 
      default: 
       return null; 
     } 
    } 

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

auf der ersten Registerkarte haben, bekam ich dieses Protokoll

09-10 20:05:29.683 17034-17034/ampersanda.elsys W/Fragment: 0 
09-10 20:05:29.684 17034-17034/ampersanda.elsys W/Fragment: 1 

auf der zweiten

09-10 20:11:03.970 17034-17034/ampersanda.elsys W/Fragment: 2 
herauskam

am dritten

09-10 20:11:54.534 17034-17034/ampersanda.elsys W/Fragment: 3 

aber auf den vierten habe ich nichts protokolliert, und ich mit dem dritten zurück bekam ich dieses

09-10 20:14:07.373 17034-17034/ampersanda.elsys W/Fragment: 1 

Zurück zur zweiten

09-10 20:14:50.241 17034-17034/ampersanda.elsys W/Fragment: 0 

und ich zum ersten zurück, ich habe wieder nichts angemeldet

mein Code läuft nicht gut, aber ich habe Fragment zeigt wie sein Schalter(), aber nicht über Code darin

Antwort

1

In Ihrem Fall sollten Sie FragmentPagerAdapter verwenden, denn wenn Sie FragmentStatePagerAdapter verwenden, können die Seiten zerstört werden, so dass Sie sie in getItem() neu erstellen müssen.

Diese Version des Pagers ist nützlicher, wenn es eine große Anzahl von Seiten gibt, die mehr wie eine Listenansicht funktionieren. Wenn Seiten für den Benutzer nicht sichtbar sind, kann ihr gesamtes Fragment zerstört werden, wobei nur der gespeicherte Zustand dieses Fragments beibehalten wird.

Verwandte Themen