Проблема с инициализацией фрагментов Viewpager при вызове setAdapter - PullRequest
0 голосов
/ 18 июня 2019

У меня есть фрагмент (ParentFragment), который использует экземпляр ViewPager для перебора экземпляров другого фрагмента (ChildFragment) с использованием класса, расширяющего FragmentStatePagerAdapter.Когда я устанавливаю адаптер для ViewPager, я следую за трассировкой стека и обнаруживаю, что экземпляры ChildFragment создаются.

class ParentFragment
{
    ViewPager v;
    QuestionnaireViewPagerAdapter a;

    onResume()
    {
     //Assuming the method works as intended. Just does a check of other class members without side effects               
     if (allowAdapterReload()){

        questionnaireAdapter = setQuestionnaireViewPagerAdapter();
        viewPager.setAdapter(questionnaireAdapter);
     }
   }

Когда вызывается viewPager.setAdapter(), вызывается метод getItem(int position) класса QuestionnaireViewPagerAdapter, определяемый как:

 @Override
 public Fragment getItem(int position) {
    Child childObject = mChildren.get(position);
    return ChildFragment.newInstance(params);
 }

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

...