仅在单击Tab时才加载片段

时间:2019-04-11 15:15:21

标签: android android-viewpager fragment android-tablayout

我希望仅在单击选项卡时才加载片段。那就是我在每个片段上都调用一个Web服务,所以我希望仅当用户单击特定选项卡时才调用该Web服务。加载片段。

“我的片段”被附加到视图寻呼机上。

我在片段中覆盖了以下方法: 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个片段,问题是当我的活动弹出时,第一个片段可见,如果我单击最后一个选项卡(即第三个选项卡)以加载第三个片段,则不会发生任何事情,这是Web服务不会打电话。

但是当我单击第二个片段,然后单击第三个片段时,是的,然后Web服务仅调用

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

2 个答案:

答案 0 :(得分:0)

我认为您的问题至少有两种解决方案:

  1. 在片段的onResume()上调用“ callApi(param)”;
  2. 覆盖onPageSelected(int)并在其中调用“ callApi(param)。

让我知道这是否对您有用!

答案 1 :(得分:0)

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

您可以限制viewpager使用

加载视图
  viewpager.setOffScreenLimit(0)