我有一个有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;
}
}
答案 0 :(得分:0)
一旦视图分页器破坏片段,它将使用位置和数组重新创建,在instantiateItem时使用逻辑..