在ViewPager Fragment

时间:2018-04-13 09:48:34

标签: android android-fragments android-viewpager

我有一个viewpager并使用了fragmentpageradapter,现在我有3个片段,在每个片段中我需要发出一个http请求(即点击api), 我不想一次打3个片段的所有api,而是只有当相应的页面是当前项目可见时才需要点击api。

我已经尝试设置offscreenlimit没有帮助,请提出建议

viewPager.setOffscreenLimit(0);

2 个答案:

答案 0 :(得分:1)

在片段

中使用此功能
private boolean hasBeenVisibleOnce = false;

@Override
public void setUserVisibleHint(boolean visible) {
    super.setUserVisibleHint(true);

    if (this.isVisible()) {
        if (visible && !hasBeenVisibleOnce) {
            new NetCheck().execute();
            hasBeenVisibleOnce= true;
        }
    }
}

您可以使用setUserVisibleHint检查片段是否对用户可见。您想添加另一个布尔值(称为hasBeenVisibleOnce)以确定片段是否至少可见一次。这是为了防止多次触发HTTP请求

答案 1 :(得分:0)

使用ViewPager类

提供的OnPageChangeListener可以轻松完成此操作
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            // communicate with Fragment here
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

首先从片段的 onCreateView 中删除API调用,然后使用此事件侦听器检查选择的页面,根据所选位置,您可以与片段通信以调用所需的API。 / p>