1. 程式人生 > >關於安卓Fragment onCreateView()重複執行

關於安卓Fragment onCreateView()重複執行

private View rootView;//快取Fragment view

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(rootView==null){
rootView=inflater.inflate(R.layout.tab_fragment, null);
}
//快取的rootView需要判斷是否已經被加過parent, 如果有parent需要從parent刪除,要不然會發生這個rootview已經有parent的錯誤。

ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) {
parent.removeView(rootView);

return rootView;
}

Fragment之間切換時每次都會呼叫onCreateView方法,導致每次Fragment的佈局都重繪,無法保持Fragment原有狀態。
解決辦法:在Fragment onCreateView方法中快取View.