FragmentTabHost簡單保存狀態的方法

最近做新項目用Fragment做標籤頁切換,由於不需要滑動,所以就想到了FragmentTabHost,但是發現了它的一個問題,就是每次切換tab的時候聲明週期都會重新加載頁面,如何避免這種情況呢~
首先我們先看一下Fragment第一次加載執行的生命週期:
這裏寫圖片描述
我們是在onCreateView裏面執行頁面加載並初始化數據的,當我們切換tab頁的時候看看他走了哪些生命週期:
這裏寫圖片描述
可以看到它執行了onDestroyView的方法,所以下一次再切換回第一個tab的時候還是重新初始化頁面,走進onCreateView方法,但不同的是他不會再走進onCreate方法。
這裏寫圖片描述
由此可知,我們fragment裏面的對象其實還沒有被銷燬,只不過view重新繪製了,我們可以把第一次加載的view存起來,然後進行判斷,這樣就可以保存狀態了。看起來非常簡單嘛

    private View rootView;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        L.d("執行onCreateView");
        if(rootView == null) {
            T.show(activity, "MineFragment創建");
            rootView = inflater.inflate(R.layout.fragment_mine, null);
            tv_mine = (TextView) rootView.findViewById(R.id.tv_mine);
            tv_mine.setText("第一次創建");
        } else {
            return rootView;
        }
        return rootView;
    }

這裏寫圖片描述

實際效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章