Как ограничить просмотр пейджера, чтобы не выполнять код из другого фрагмента - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть видовой пейджер, который содержит 2 фрагмента.

Теперь, когда пользователь загружает действие, загружаются оба представления, оба они содержат тег аналитики, и приложения отправляют тег представления из обоих фрагментов.

Я хочу ограничить это.Я хочу, чтобы он не выполнял никакого кода из фрагмента 2, если пользователь не нажал на него на вкладке просмотра пейджера.

Ответы [ 3 ]

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

вы можете делать вещи после того, как фрагмент становится видимым

 @Override
 public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
    }
    else {
    }
  }
0 голосов
/ 13 сентября 2018

Лучшая реализация ViewPager - это утилизация элементов ViewPager. И вы можете достичь этого с помощью offScreenPageLimit. Однако, отвечая на ваш вопрос, я сам столкнулся с подобной ситуацией, и пока нет идеального решения для достижения такого сценария. Но есть определенные хаки, которые вы можете сделать.

Одним из решений является использование

@Override
 public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
    }
    else {
    }
  }

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

Хак, который я делаю, - это использование «OnTabSelectedListener», если я интегрирую viewpager с tablayout, и если есть только Viewpager, вы можете переопределить «OnPageSelectedListener».

Если вы используете OnTabSelectedListener , вы получите обратные вызовы в методе "OnTabSelected ()", когда выбрана вкладка. Поэтому, когда вы получаете обратный вызов, используйте публичную функцию в соответствующем фрагменте для загрузки данных (вызовы API, настройка адаптера и т. Д.).

Надеюсь, это поможет

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

В случае ViewPager это не представляется возможным, я думаю ... минимальный offScreenPageLimit по умолчанию установлен в 1. Таким образом, он будет загружать одну страницу с каждой стороны по умолчанию. Так что лучше сделать пользовательский просмотр и загрузить фрагмент в соответствии с касаниями пользователя.

Или проверьте этот обходной путь, возможно , этот может быть полезен в вашем случае. Я никогда не пробовал это, но вы можете дать ему шанс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...