問題原因:onCreateView每次都調用導致的,這樣fragment每次都會設置新的view,而之前的view並沒有被回收,這就導致了這個問題。
解決方案:1,預加載,viewpager.setOffscreenPageLimit(num);num為妳的頁面的個數
或者復制viewpager源碼,修改字段private static final int DEFAULT_OFFSCREEN_PAGES =num;//默認是1 改成妳預加載頁面個數
2,基類移除view,再重新添加
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO 自動生成的方法存根if(contentView !=null) {
ViewGroup parent = (ViewGroup) contentView.getParent();
if(parent !=null) {
parent.removeView(contentView);
}
return contentView;
}
returncontentView = inflater.inflate(R.layout.fragment,
container, false);
}
3,重寫public?void destroyItem(ViewGroup container, int?position, Object?object),去掉super.destroyItem(container, position, object);
4,如果fragment裏面嵌套了viewpager,裏面的viewpager加載網絡數據時也會出現空白頁面,可以把FragmentStatePagerAdapter改成FragmentPagerAdapter即可解決。