Loading core/java/android/app/BackStackRecord.java +24 −1 Original line number Diff line number Diff line Loading @@ -807,7 +807,7 @@ final class BackStackRecord extends FragmentTransaction implements default: throw new IllegalArgumentException("Unknown cmd: " + op.cmd); } if (!mAllowOptimization && op.cmd != OP_ADD) { if (!mAllowOptimization && op.cmd != OP_REMOVE) { mManager.moveFragmentToExpectedState(f); } } Loading Loading @@ -873,6 +873,29 @@ final class BackStackRecord extends FragmentTransaction implements } } /** * Removes fragments that are added or removed during a pop operation. * * @param added Initialized to the fragments that are in the mManager.mAdded, this * will be modified to contain the fragments that will be in mAdded * after the execution ({@link #executeOps()}. */ void trackAddedFragmentsInPop(ArrayList<Fragment> added) { for (int opNum = 0; opNum < mOps.size(); opNum++) { final Op op = mOps.get(opNum); switch (op.cmd) { case OP_ADD: case OP_ATTACH: added.remove(op.fragment); break; case OP_REMOVE: case OP_DETACH: added.add(op.fragment); break; } } } boolean isPostponed() { for (int opNum = 0; opNum < mOps.size(); opNum++) { final Op op = mOps.get(opNum); Loading core/java/android/app/FragmentManager.java +2 −0 Original line number Diff line number Diff line Loading @@ -2026,6 +2026,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate final boolean isPop = isRecordPop.get(recordNum); if (!isPop) { record.expandReplaceOps(mTmpAddedFragments); } else { record.trackAddedFragmentsInPop(mTmpAddedFragments); } final int bumpAmount = isPop ? -1 : 1; record.bumpBackStackNesting(bumpAmount); Loading Loading
core/java/android/app/BackStackRecord.java +24 −1 Original line number Diff line number Diff line Loading @@ -807,7 +807,7 @@ final class BackStackRecord extends FragmentTransaction implements default: throw new IllegalArgumentException("Unknown cmd: " + op.cmd); } if (!mAllowOptimization && op.cmd != OP_ADD) { if (!mAllowOptimization && op.cmd != OP_REMOVE) { mManager.moveFragmentToExpectedState(f); } } Loading Loading @@ -873,6 +873,29 @@ final class BackStackRecord extends FragmentTransaction implements } } /** * Removes fragments that are added or removed during a pop operation. * * @param added Initialized to the fragments that are in the mManager.mAdded, this * will be modified to contain the fragments that will be in mAdded * after the execution ({@link #executeOps()}. */ void trackAddedFragmentsInPop(ArrayList<Fragment> added) { for (int opNum = 0; opNum < mOps.size(); opNum++) { final Op op = mOps.get(opNum); switch (op.cmd) { case OP_ADD: case OP_ATTACH: added.remove(op.fragment); break; case OP_REMOVE: case OP_DETACH: added.add(op.fragment); break; } } } boolean isPostponed() { for (int opNum = 0; opNum < mOps.size(); opNum++) { final Op op = mOps.get(opNum); Loading
core/java/android/app/FragmentManager.java +2 −0 Original line number Diff line number Diff line Loading @@ -2026,6 +2026,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate final boolean isPop = isRecordPop.get(recordNum); if (!isPop) { record.expandReplaceOps(mTmpAddedFragments); } else { record.trackAddedFragmentsInPop(mTmpAddedFragments); } final int bumpAmount = isPop ? -1 : 1; record.bumpBackStackNesting(bumpAmount); Loading