Я использую FragmentPagerAdapter для навигации между 4 фрагментами в моем приложении. Но я столкнулся со странной проблемой. Когда я отлаживал свое приложение, я обнаружил, что значение индекса в getItem загружается в 0 при запуске MainActivity, поэтому загружается Fargment с 0-м индексом, после чего индекс изменяется на 1, а фрагмент с 1-м индексом загружается, и из-за этого последовательность получения фрагмента немного нарушена. Не знаю, упускаю ли я что-то. Но я действительно не могу понять проблему. Вот мой класс FragmentPagerAdapter:
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
Context context;
public TabsPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
return new FragmentA();
case 1:
return new FragmentB();
case 2:
return new FragmentC();
case 3:
return new FragmentD();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 4;
}
}
Этот класс не ведет себя так, как я хочу, чтобы он работал. Пользовательский интерфейс загружается в соответствии с тем, как я хочу. Я имею в виду, предположим, если я нажму на вкладку FragmentB(), будет создан индекс следующего фрагмента, т.е. FragmentC(), но на моем устройстве я увижу FragmentB(). Я знаю, что не могу правильно объяснить проблему. но все же я был бы признателен, если кто-нибудь может помочь, но, пожалуйста, не минусуйте. Заранее спасибо :)
onTabSelected
- person Shayan Pourvatan   schedule 01.02.2014FragmentStatePagerAdapter
загружать фрагменты вокруг (вперед и назад от...) начальной позиции. Это поведение контролируется адаптеромsetOffscreenPageLimit(int number)
. В Javadoc указано, что смещение по умолчанию равно 1, что означает, что при нажатии фрагмента B после отладки будет отмечена загрузка фрагмента C... из-за этого смещения (фрагмент B был загружен, когда был загружен фрагмент A/фрагмент C). - person BrantApps   schedule 01.02.2014