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原有狀態。java
解決辦法:在Fragment onCreateView方法中緩存View緩存