From 128690c07ab9ced034735041e7efc00bd818cd67 Mon Sep 17 00:00:00 2001 From: George Mount Date: Thu, 3 Dec 2015 14:43:33 -0800 Subject: [PATCH] Revert "Revert "Give transitioning fragment a context prior to retrieving transition"" This reverts commit 214f6749fccb5e90e909ae1bdce567b83d286433. Change-Id: Iced45f42251a82448e4dc4392315c3864494a31a --- core/java/android/app/BackStackRecord.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/java/android/app/BackStackRecord.java b/core/java/android/app/BackStackRecord.java index 9081ef8a1d1a7..7126b16f8c33d 100644 --- a/core/java/android/app/BackStackRecord.java +++ b/core/java/android/app/BackStackRecord.java @@ -957,6 +957,7 @@ final class BackStackRecord extends FragmentTransaction implements */ private TransitionState beginTransition(SparseArray firstOutFragments, SparseArray lastInFragments, boolean isBack) { + ensureFragmentsAreInitialized(lastInFragments); TransitionState state = new TransitionState(); // Adding a non-existent target view makes sure that the transitions don't target @@ -982,6 +983,21 @@ final class BackStackRecord extends FragmentTransaction implements return state; } + /** + * Ensure that fragments that are entering are at least at the CREATED state + * so that they may load Transitions using TransitionInflater. + */ + private void ensureFragmentsAreInitialized(SparseArray lastInFragments) { + final int count = lastInFragments.size(); + for (int i = 0; i < count; i++) { + final Fragment fragment = lastInFragments.valueAt(i); + if (fragment.mState < Fragment.CREATED) { + mManager.makeActive(fragment); + mManager.moveToState(fragment, Fragment.CREATED, 0, 0, false); + } + } + } + private static Transition cloneTransition(Transition transition) { if (transition != null) { transition = transition.clone();