關於fragment多次調用onCreateView的問題,多次初始化

多個Fragment切換的時候,總會重複初始化,用這招可以搞定。

當第一次創建fragment的時候在onCreateView裏面初始化view,下一次創建時不需要重新創建view時,希望使用已經創建的,所以要把view設爲全局變量。view爲空,表示是第一次,則初始化view。如果view不爲空,則返回該view,需要注意的是:如果直接返回會報錯(java.lang.IllegalStateException: The specified child already has a parent),還沒研究什麼原因,但是大體意思就是有一個parent了,所以在返回該view前要找到該view的parent,然後remove掉該view,再返回就ok了。

下面代碼來源於網絡:

private View rootView;//這個要全局變量,全局變量的方法可以參考另一篇文章
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (null != rootView) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (null != parent) {
parent.removeView(rootView);
}
} else {
rootView = inflater.inflate(layoutId, null);
initView(rootView);// 控件初始化
}
return rootView;
}

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