Merge "Give transitioning fragment a context prior to retrieving transition"

This commit is contained in:
George Mount
2015-12-01 15:19:27 +00:00
committed by Android (Google) Code Review

View File

@@ -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();