Android:当我打开一个特定的选项卡时,为什么选项卡布局所有片段都会刷新

时间:2016-11-30 05:44:54

标签: android

我有3个标签。当我打开第一个选项卡时,它会不必要地刷新所有3个选项卡。我该如何解决这个问题?

2 个答案:

答案 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。

其中任何一个都可以解决您的问题。