版权声明:本文为DmrfCoder原创作品,如有转载请注明出处 https://blog.csdn.net/qq_36982160/article/details/82422101
原因
这种情况一般是因为你在全局范围实例化了一个FragmentTransaction,然后多次使用同一个实例进行fragment跳转
解决方案
将:
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
.....
}
@Override
public void startfragment(Fragment targetFragment, boolean addToBackStack) {
fragmentTransaction.replace(R.id.id_fragment_layout, targetFragment, targetFragment.getClass().getName());
if (addToBackStack) {
fragmentTransaction.addToBackStack(null);
} else {
mainPresenter.initActivityData();
}
fragmentTransaction.commitAllowingStateLoss();
}
改为:
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;
@Override
public void startfragment(Fragment targetFragment, boolean addToBackStack) {
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.id_fragment_layout, targetFragment, targetFragment.getClass().getName());
if (addToBackStack) {
fragmentTransaction.addToBackStack(null);
} else {
mainPresenter.initActivityData();
}
fragmentTransaction.commitAllowingStateLoss();
}