在ViewPager下销毁的碎片会发生什么?

时间:2013-11-14 10:48:56

标签: java android android-fragments android-viewpager navigation-drawer

我有一个有7个页面的ViewPager,我在导航时保留了4个页面,并在被另外4个集合替换为GC后被摧毁。

 gPager.get().setOffscreenPageLimit(4);

在我的自定义FragmentStatePagerAdapter

@Override public Parcelable saveState() { return null; }

我的问题是我得到空指针错误,即使我在片段中销毁像'mDrawerLayout'和mDrawerList之后手动重新初始化它们。例如:

        View rootView = inflater.inflate(R.layout.drawer_layout_fragment, container, false);
        mDrawerLayout = (DrawerLayout) rootView.get().findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) rootView.get().findViewById(R.id.left_drawer);

如果其他片段被破坏,并且某些片段正在ViewPager的页面中显示在屏幕上。这些片段是否会重新创建,或者只是被保留,即使它经历了onDestory

如果Frag2被销毁而Frag1未被销毁。 viewPager(位于主活动中)是否会 再次致电setAdapter?或者它会自动跳过setAdapter并直接转到MyCustomPagerAdapter来填充被破坏的片段?

@覆盖

public Fragment getItem(int arg0) {
    SavePref saveState = new SavePref(mContext.get());

    switch(arg0){
        /** Android tab is selected */
        case 0:
            Frag f1 = new Frag1()
            return f1;

        case 1:
            Frag f2 = new Frag2()
            return f2;
    }
}

1 个答案:

答案 0 :(得分:0)

一旦视图分页器破坏片段,它将使用位置和数组重新创建,在instantiateItem时使用逻辑..