Fragment在绘制控件时,外面系统会包裹一层父控件:NoSaveStateFrameLayout,要注意以下两点:
1.创建fragment的适配器extends FraggmentPagerAdatper时,在向父容器添加子控件时,要先判断父容器里是否有子控件,有则先清除再添加,因为FraggmentPagerAdatper会缓存Fragment界面。:如下
public static void removeSelfFromParent(View child){ if(child!=null){ ViewParent parent = child.getParent(); if(parent!=null && parent instanceof ViewGroup){ ViewGroup group = (ViewGroup) parent; group.removeView(child);//移除子View } } }
2.创建fragment的适配器extends FraggmentStatePagerAdatper时,不会缓存Fragment,无需考虑以上问题。用于对内存要求高要求