我有3个标签。当我打开第一个选项卡时,它会不必要地刷新所有3个选项卡。我该如何解决这个问题?
答案 0 :(得分:0)
使用viewPager.setOffscreenPageLimit(2)
。它会在右侧缓存两个视图,在左侧缓存两个视图,不会再次加载它们并获得
答案 1 :(得分:0)
setOffscreenPageLimit(0)没用。如果将其设置为小于1,则根据源代码将其设置为1.
public void setOffscreenPageLimit(int limit) {
if (limit < DEFAULT_OFFSCREEN_PAGES) {
Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
DEFAULT_OFFSCREEN_PAGES);
limit = DEFAULT_OFFSCREEN_PAGES;
}
if (limit != mOffscreenPageLimit) {
mOffscreenPageLimit = limit;
populate();
}
}
和DEFAULT_OFFSCREEN_PAGES是:
private static final int DEFAULT_OFFSCREEN_PAGES = 1;
以下是我的建议: 使用反射将mOffscreenPageLimit设置为值0;
在OnPageChangeListener的onPageSelected上刷新片段,而不是在片段中刷新它: 在OnPageChangeListener:
private OnPageChangeListener mOnPageChangeListener = new SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
//put your refreshing code here.
}
};
片段的onCreateView():
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(is default page that selected){
//put your refresh code here.
}
}
最后,复制ViewPage.java,更改值为0的DEFAULT_OFFSCREEN_PAGES。
其中任何一个都可以解决您的问题。