其中一种比较方便的方案,请看一位大神写的:9行代码让你App内的Fragment对重叠说再见,里面还有从源码的角度分析重叠的原因,还给出了解决方案,我先膜拜一下!!
这里我提供一种很方便的解决方案,就是通过删除子View去实现。我通过在Basefragment的onCreateView里面删除子View去实现。我的项目的主activity是用replace来加入fragment的。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup group = ((ViewGroup)mMainLayout.getParent());
if(group != null)
group.removeAllViews();
mMainLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
return mMainLayout;
}
然后子fragment初始化布局可以这样,在onCreate里面:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_unlinkage_homepage);
....
}
上面的setContentView是自己在BaseFragment里实现的方法:
public void setContentView(int layoutId){
mMainLayout = (ViewGroup) ViewGroup.inflate(mActivity, layoutId, null);
}
这样应该就能解决问题。