寫了三個Fragment,一次點擊跳轉顯示正常,如果從第一個直接跳轉到第三個,第三個頁面會出現空白界面。
問題找到了:原來動態獲取數據頁面數據不顯示,頁面顯示空白,就是onCreateView每次都調用導致的,這樣fragment每次都會設置新的view,而調試發現,之前的view並沒有被回收……這就導致了,新的view覆蓋了之前設置的view,這也就說的通了。
結合網上看的資料,得到解決方法一共有以下3種:
1 viewpager.setOffscreenPageLimit(num);num為你的tab數,
2 在onCreateView里面,判斷Fragment是否已經添加了contentView(第一次加載時,可以將view保存下 來,再 次加載時,判斷保存下來的view是否為null),如果保存的view為null,返回新的view ,否則,先將 保存的view從父view中移除,然后將該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; } return contentView = inflater.inflate(R.layout.fragment, container, false); }
3 重寫public void destroyItem(ViewGroup container, int position, Object object),去掉super.destroyItem(container, position, object);
