1. 程式人生 > >Fragment如何避免onCreateView重複呼叫

Fragment如何避免onCreateView重複呼叫

在做一個使用Fragment的專案中,遇到在滑動Fragment的過程中不斷重複呼叫onCreateView的問題,導致控制元件不斷初始化,影響程式的整體邏輯。於是便使用Log列印了所有可重寫的父類方法。結果如下,這個過程有助於進一步熟悉Fragment的生命週期。

1.程式啟動後
滑動到本介面或是相鄰介面便開始列印如下資訊:
這裡寫圖片描述
2.滑動到相隔一個介面後
列印資訊如下:
這裡寫圖片描述
3.繼續滑動到相鄰介面
列印資訊如下:
這裡寫圖片描述
可以看出只有onAtattach和onCreate方法只調用了一次,但是控制元件的初始話大都是在onCreateView中完成了,於是便想到了ListView中避免重複初始化的方法。

**解決方法:

private View v;
@Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (null != v){
            ViewGroup parent = (ViewGroup) v.getParent();
            if (null != parent) {
                parent.removeView(v);
            }
        }else
{ v = inflater.inflate(R.layout.main_tab_clock,container,false); /** * 控制元件的初始化 */ } return v;