日常使用中括勺,經(jīng)常會遇到在一個Activity(或Fragment)下,切換Fragment的情況曲掰,但有時會出現(xiàn)隨著切換次數(shù)的增多疾捍,F(xiàn)ragment無法保持原有狀態(tài)的情況,下面介紹一下如何避免:
private View rootView;//緩存Fragment view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if ( rootView == null ) {
rootView = inflater.inflate(R.layout.blank_fragment, container,false);
} else {
//緩存的rootView需要判斷是否已經(jīng)被加過parent栏妖, 如果有parent需要從parent刪除乱豆,要不然會發(fā)生這個rootview已經(jīng)有parent的錯誤。
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) {
parent.removeView(rootView);
}
}
return rootView;
}
Fragment在切換時吊趾,每次都會執(zhí)行onCreateView(),導致rootView每次都會重繪宛裕,使Fragment無法保持原有狀態(tài)。
解決辦法:在執(zhí)行onCreateView()時论泛,緩存rootView揩尸。