Fragment如何避免onCreateView重複呼叫
阿新 • • 發佈:2019-02-18
在做一個使用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;