先上初始化及缓存方案,可以完美解决多次加载fragment冲突的问题。
private View rootView; Context mContext; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (rootView == null) { rootView = inflater.inflate(R.layout.yuesai_activity_main, null); } ViewGroup parent = (ViewGroup) rootView.getParent(); if (parent != null) { parent.removeView(rootView); } return rootView; }
原理分析,通过自己找资料,总结如下:
当传入新的activity与之绑定时,需要先移除已绑定的,所以调用
parent.removeView(rootView);
然后在初始化之后 oncreateview方法调用完毕,则调用onactivitycreate()与新的activity绑定,这样就不会存在多次调用fragment而产生冲突。
并且无需再次初始化,直接使用控件。