Загружать фрагмент только при нажатии Tab - PullRequest
0 голосов
/ 11 апреля 2019

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

Мои фрагменты прикреплены к пейджеру просмотра.

Я переопределил следующий метод в моих фрагментах: setUserVisibleHint

override fun setUserVisibleHint(isFragmentVisible: Boolean) {
        super.setUserVisibleHint(true)

        if (this.isVisible) {
            // we check that the fragment is becoming visible
            if (isFragmentVisible && !isLoadOnce) {
                callAPI(param)
                isLoadOnce = true
            }
        }
    }

переменная установлена ​​как: private var isLoadOnce = false в классе фрагментов.

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

Но когда я щелкаю второй фрагмент, а затем третий фрагмент, ида, тогда веб-служба вызывает только

Поэтому я хочу вызывать веб-службу всякий раз, когда пользователь щелкает каждый фрагмент (фрагмент № 2 или фрагмент № 3)!Может кто-нибудь выяснить, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

viewpager, как правило, загружает виды сбоку, чтобы обеспечить плавное перелистывание.

Вы можете ограничить просмотр в пейджере, используя

  viewpager.setOffScreenLimit(0)
0 голосов
/ 11 апреля 2019

Я думаю, что есть как минимум 2 решения вашей проблемы:

  1. Вызовите "callApi (param)" для onResume () фрагмента;
  2. Переопределить onPageSelected (int) и вызвать в нем callApi (param).

Дайте мне знать, сработало ли это для вас!

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