FragmentStatePagerAdapter 的 setUserVisibleHint() 问题

setUserVisibleHint() issue with FragmentStatePagerAdapter

我知道这个问题已经在不同的网站上提出过(例如 here and there,但我很难找到适合我的特定用例的解决方案。

事情是这样的:我有 3 个选项卡(每个选项卡扩展 Fragment),它们由 ActionBarActivity(称为 Home)托管。 Home 包含一个 ViewPager,它扩展了一个 FragmentStatePagerAdapter(这是创建差异选项卡的地方)。

当我滑动到最后一个选项卡(第 3 个选项卡)时,我使用 setUserVisibleHint() 使用 AsyncTask<> 从服务器加载一些数据:

public class TabOperations extends Fragment {

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if(isVisible())
            loadUserRequestByDate(); // Launch Asynctask<> method.
    }
}

从第一个选项卡滑动到最后一个选项卡时效果很好。但是,当我滑回之前的选项卡时(所以,第二个),setUserVisibleHint()(所以,loadUserRequestByDate())中的方法被触发。

我怎样才能避免这种行为?

您是否尝试过使用 setOffscreenPageLimit(3) 为您的 viewpager 保留片段。

http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)