0
public class MyPagerAdapter extends FragmentPagerAdapter { 

    private List<Fragment> fragmentList; 
    /** 
    * Use this method to add pages in order 
    */ 
    private void initializeFragmentList() { 
     fragmentList = new ArrayList<>(); 
     fragmentList.add(LocationCriteriaFragment.newInstance("FirstFragment", "Instance 1")); 
     fragmentList.add(NeighborhoodRatingFragment.newInstance("", "")); 
     fragmentList.add(PropertyCriteriaFragment.newInstance("", "")); 
     fragmentList.add(ExteriorPhotoEnhancedFeaturesFragment.newInstance()); 
     fragmentList.add(InteriorPhotoEnhancedFeaturesFragment.newInstance()); 
    } 
    public MyPagerAdapter(android.support.v4.app.FragmentManager fm) { 
     super(fm); 
     initializeFragmentList(); 
    } 

    public List<Fragment> getFragmentList() { 
     return fragmentList; 
    } 

    @Override 
    public Fragment getItem(int pos) { 
     return fragmentList.get(pos); 
    } 

    @Override 
    public int getCount() { 
     return fragmentList.size(); 
    } 
} 

Я использую это как адаптер для ViewPager. Является ли это хорошим подходом для быстрого получения ссылок на фрагменты на основе позиций? Окажет ли это огромный неожиданный сбой во время некоторой части жизненного цикла Fragment/Activity?Есть ли что-то не так с этим подходом FragmentPagerAdapter?

+0

Я не вижу никаких проблем. Все хорошо. Если вы хотите просмотреть код, вы можете опубликовать его на http://codereview.stackexchange.com. –

+0

Я не согласен с моим предыдущим комментарием, FragmentPagerAdapter лучше подходит для этого случая вместо FragmentStatePagerAdapter. –

+1

На мой взгляд, используя этот подход, вы не сможете воспользоваться «ленивой инициализацией объектов фрагмента», поскольку ваши фрагменты будут созданы в момент создания вашего адаптера, который хорош, если ваши фрагменты не будут тяжелыми, в этом случае он будет создавать заметное отставание при первоначальном рендеринге. Посмотрите здесь https://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html – raktale

ответ

0

Попробуйте использовать FragmentPagerStateAdapter вместо FragmentPagerAdapter.

FragmentPagerAdapter сохраняет предыдущие данные, которые извлекаются из адаптера, а FragmentStatePagerAdapter принимает новое значение от адаптера каждый раз он выполнен

+0

Было бы лучше, если бы вы добавили объяснение, почему это лучше. –

+0

посмотрите пожалуйста уточнение информация в ответе. спасибо –

+0

Прочтите [это] (http://stackoverflow.com/questions/18747975/difference-between-fragmentpageradapter-and-fragmentstatepageradapter?rq=1). Вы узнаете, что FragmentPagerAdapter здесь лучше. –