在 Fragment 中使用 ViewPager + Fragment

在 Fragment 中如果使用了 ViewPager + Fragment ,會出現第二次進入 Fragment 後,會整個 Fragment 空白的問題。

整個頁面的 Fragment , 我們稱為 ViewPagerFragment

在 ViewPager 中的 Fragment , 我們稱為 PagerItemFragment

那為什麼會出現這個問題呢?

在第一次載入 ViewPagerFragment 時,ViewPagerAdapter 也會載入 PagerItemFragment #1 跟 PagerItemFragment #2 ,

並在離開 ViewPagerFragment 時會執行 3 個 Fragment 的 onDestroyView

而在第二次載入 PageFragment 時,則會只會執行 ViewPagerFragment 的 onCreateView(),但卻不會執行 PagerItemFragment #1 跟 PagerItemFragment #2 的 onCreateView()

怎麼解決這個問題呢?

讓 Android 重新掛載原本的 View

在 ViewPagerFragment 中的 onCreateView() 加上

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.d(TAG, "onCreateView");
    if (mView != null) {
        ViewGroup parent = (ViewGroup) mView.getParent();
        if (parent != null) {
            parent.removeView(mView);
        }
        return mView;
    }

    mView = inflater.inflate(R.layout.fragment, false);
    ...
    return mView;
}

參考文章

ViewPager+Fragment第二次进入显示空白

android中viewpager+fragment互相切换出现空白页

0 意見:

張貼留言