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

问题描述 投票:0回答:2

我希望仅在单击选项卡时加载我的片段。那就是我在每个片段上调用一个web服务,所以我希望只有当用户点击特定标签时才调用该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
            }
        }
    }

变量设置为:片段类中的private var isLoadOnce = false。

我有3个片段,问题是当我的活动弹出时,第一个片段是可见的,如果我点击最后一个选项卡是加载第三个片段的第三个选项卡,那么Web服务根本不会调用的任何事情都没有。

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

所以每当用户点击每个片段(2号片段或3号片段)时,我都想调用Web服务!有人可以弄清楚我做错了什么吗?

android android-viewpager fragment android-tablayout
2个回答
0
投票

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

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

如果这对您有用,请告诉我!


0
投票

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

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

  viewpager.setOffScreenLimit(0)
© www.soinside.com 2019 - 2024. All rights reserved.