From c972092e7616571b4a5fc5f40f693e2ba2b132fa Mon Sep 17 00:00:00 2001 From: George Mount Date: Mon, 15 May 2017 13:45:22 -0700 Subject: [PATCH] Fix back stack problems due to postponed transitions Bug 38277003 The back stack was being moved while executing operations and then again when the postponed transaction was executed. It should only be done once. Test: Ie47e1f2f158325b9cfd6edb5c40c65d764ff9056 Support Lib Change: I3159c2345a7b77fa82f1c602f4639f51b5a47980 Change-Id: I3b7a032e7e8a9aec565157d42dcaa7232b256ae8 --- core/java/android/app/FragmentManager.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index 1b2543c9d62ee..95d55dc2d6e67 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -2303,11 +2303,15 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate */ private void completeExecute(BackStackRecord record, boolean isPop, boolean runTransitions, boolean moveToState) { + if (isPop) { + record.executePopOps(moveToState); + } else { + record.executeOps(); + } ArrayList records = new ArrayList<>(1); ArrayList isRecordPop = new ArrayList<>(1); records.add(record); isRecordPop.add(isPop); - executeOps(records, isRecordPop, 0, 1); if (runTransitions) { FragmentTransition.startTransitions(this, records, isRecordPop, 0, 1, true); }