Запрет обновления определенного фрагмента в viewpager - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть несколько фрагментов в окне просмотра, и первый фрагмент (TimelineFragment) заменяется всякий раз, когда пользователь выбирает просмотр другого сообщества.

Я могу успешно изменить TimelineFragment, когда я изменил свойFragmentPagerAdapter для FragmentStatePagerAdapter, поскольку FragmentPagerAdapter не обновляет фрагмент, даже когда я использую pagerAdapter.notifyDataSetChanged ()

Следовательно, я использовал FragmentStatePagerAdapter со следующим кодом:

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

public void setItem(int position, Fragment fragment) {
    fragmentList.set(position, fragment);
}

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

@Override
public int getItemPosition(Object object) {
   return PagerAdapter.POSITION_NONE;
}

Проблема возникает при каждом перемещениифрагмент, этот фрагмент обновляется.Из-за этого мой просмотр в каждом фрагменте перезапускает все списки и переходит в начало этого списка.

Моя цель заключается в том, чтобы, когда пользователь выбрал просмотр другого сообщества, фрагмент временной шкалы (ОДИН, надеюсь, исключая другиефрагменты) будет единственным фрагментом для перезагрузки и загрузки соответствующего списка на основе выбранного сообщества.

1 Ответ

0 голосов
/ 17 сентября 2018

метод onCreateView во фрагментах вызывает каждый раз, когда вы перемещаетесь между 3 фрагментами в пейджере представления.так что решение:

1 - добавьте static boolean loaded=false; в свой фрагмент

2-, прежде чем вызывать код, который обновляет представление реселлера, или любой код, который вы не хотите вызывать, добавьте

    if(!loaded){
    //your code
    ...

    loaded=true;
    }
...