Android 仅在单击选项卡时加载片段

Android 仅在单击选项卡时加载片段,android,android-viewpager,fragment,android-tablayout,Android,Android Viewpager,Fragment,Android Tablayout,我只希望在单击选项卡时加载片段。也就是说,我正在对每个片段调用一个webservice,所以我希望只有当用户单击特定选项卡时才调用该webservice;加载片段 我的片段已附加到查看寻呼机 我在片段中重写了以下方法:setUserVisibleHint override fun setUserVisibleHint(isFragmentVisible: Boolean) { super.setUserVisibleHint(true) if (this.isV

我只希望在单击选项卡时加载片段。也就是说,我正在对每个片段调用一个webservice,所以我希望只有当用户单击特定选项卡时才调用该webservice;加载片段

我的片段已附加到查看寻呼机

我在片段中重写了以下方法: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
            }
        }
    }
该变量在fragment类中设置为:private var isLoadOnce=false

我有3个片段,问题是当我的活动popsup时,第一个片段是可见的,如果我单击最后一个选项卡,即第三个选项卡来加载第三个片段,则不会发生任何事情,即web服务根本不会调用

但是当我点击第二个片段,然后点击第三个片段,是的,webservice只调用

因此,当用户单击每个片段(2号片段或3号片段)时,我想调用web服务!
有人能找出我做错了什么吗?

我想至少有两种方法可以解决你的问题:

  • 在片段的onResume()上调用“callApi(param)”
  • 重写(int)并在其中调用“callApi(param)”

  • 让我知道这是否适合您!

    viewpager通常会加载侧视图以提供平滑的滑动体验

    您可以使用限制viewpager加载视图

      viewpager.setOffScreenLimit(0)