为什么FragmentTabHost切换Fragment时,如果切换回之前的Fragment,会重新生成整个界面呢。
因为切换Fragment时,会调用原Fragment的onDestroyVIew方法,再切换回来的时候就会调用onCreateView方法。(但是这里不会调用Fragment的onDestroy方法,我通过查Fragment生命周期的输出注意到了)。
通过上网查了很多资料,发现一种方法不错。感谢提供这种方法的不知名童鞋。
private View rootView;//缓存Fragmen view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(rootView==null){
rootView=inflater.inflate(R.layout.tab_fragment, null);
}
/do something
//缓存的rootView需要判断是否已经被加过parent, 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) {
parent.removeView(rootView);
}
return rootView;
}
向大家学习~