现在在android app的开发中,Fragment使用也越来越多,怎么管理Fragment也是一个普遍存在的问题,一般情况下我们加入Fragment的时候,如果是添加进了回退栈,那么按返回键就会退出上一层,加入的时候代码如下:
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(id, targetFragment, tag);
transaction.addToBackStack(tag);
transaction.commitAllowingStateLoss();
那么有可能存在一种情况,退出的Fragment是比较深,然后退出的时候需要把前面的都退出掉,比如A->B->C->D->E,这个时候如果退出E想把前面的都退出掉,该怎么实现?
for (int i = manager.getBackStackEntryCount() -1;i>=0;i--){
manager.popBackStack(manager.getBackStackEntryAt(i).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
Fragment fragment = manager.findFragmentByTag(manager.getBackStackEntryAt(i).getName());
if (null != fragment) {
FragmentTransaction transaction = manager.beginTransaction();
transaction.remove(fragment);
transaction.commitAllowingStateLoss();
}
}