summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author George Mount <mount@google.com> 2015-11-30 10:55:20 -0800
committer George Mount <mount@google.com> 2015-11-30 10:55:20 -0800
commit2b2d23aa706c2d8efb05e15f08bdc41883a4a651 (patch)
treef51894c29ad3fcc2e3963f1b91f88db6bcfc040e
parent734d399382f33b5683ad9ae70e6173e3e002a347 (diff)
Give transitioning fragment a context prior to retrieving transition
Bug 23688972 An incoming fragment that is going to execute a transition may need to have a context in order to load the transition. This CL moves the state of incoming fragments to CREATED prior to getting their Transitions. Change-Id: I08b8cda479f7542fb326aa4f0f62a07ccc5662b0
-rw-r--r--core/java/android/app/BackStackRecord.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/core/java/android/app/BackStackRecord.java b/core/java/android/app/BackStackRecord.java
index 9081ef8a1d1a..754a5710191b 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<Fragment> firstOutFragments,
SparseArray<Fragment> 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,20 @@ 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<Fragment> 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.moveToState(fragment, Fragment.CREATED, 0, 0, false);
+ }
+ }
+ }
+
private static Transition cloneTransition(Transition transition) {
if (transition != null) {
transition = transition.clone();