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 保留片段。
我知道这个问题已经在不同的网站上提出过(例如 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 保留片段。