2016-09-10 2 views
1

У меня есть функция MainActivity, которая имеет ViewPager и TabLayout. В ViewPager есть 4 (четыре) фрагмента, которые связаны там. У меня есть проблема о (возможно) FragmentStatePagerAdapterFragmentStatePagerAdapter возвращает неправильное положение, но правый фрагмент

У меня есть мой код запуска

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

на первой вкладке, я получил этот журнал вышел

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 

на второй

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

на третьем

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

но на четвёртом я не получил ничего вошли, и я вернулся к третьему я получил эту

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

Назад ко второму

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

и я вернулся к первой, я получил ничего снова не вошли

мой код работает не очень хорошо, но я получил фрагменты, как его переключатель(), но не код внутри него

ответ

1

В вашем случае вы должны использовать FragmentPagerAdapter, потому что, когда вы используете FragmentStatePagerAdapter, страницы могут быть уничтожены, поэтому вам нужно будет их воссоздать в getItem().

Эта версия пейджера более полезна, когда имеется большое количество страниц, работающих больше как просмотр списка. Когда страницы не видны пользователю, их весь фрагмент может быть уничтожен, сохраняя сохраненное состояние этого фрагмента.