FragmentTabHost嵌套ViewPager,Fragment第二次点击不显示的主要原因是第二次加载的时候重复调用了onCreateView()这个方法,问题的解决方法就是在onCreateView()方法里面加入以下代码
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null) {
parent.removeView(view);
}
return view;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null) {
parent.removeView(view);
}
return view;
}
view = inflater.inflate(R.layout.confirmed_view, container, false);
return view;
}
FragmentTabHost实现TAb页面防止某个fragment重复加载的问题,也是在onCreateView()方法里面重写以下代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(mView == null){
mView = inflater.inflate(R.layout.fragment_news, null);
initLoadingFragment();
updataVersion();
ininView();
requestData();
}
/**
* 缓存的rootView需要判断是否已经被加过parent,
* 如果有parent需要从parent删除,
* 要不然会发生这个rootview已经有parent的错误。
*/
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
parent.removeView(mView);
}
return mView;
}