diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java index 137f77d038b6a..540376ec5fb72 100644 --- a/core/java/android/app/ActivityTransitionCoordinator.java +++ b/core/java/android/app/ActivityTransitionCoordinator.java @@ -219,7 +219,9 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { protected void viewsReady(ArrayMap sharedElements) { sharedElements.retainAll(mAllSharedElementNames); - mListener.onMapSharedElements(mAllSharedElementNames, sharedElements); + if (mListener != null) { + mListener.onMapSharedElements(mAllSharedElementNames, sharedElements); + } mSharedElementNames.addAll(sharedElements.keySet()); mSharedElements.addAll(sharedElements.values()); if (getViewsTransition() != null && mTransitioningViews != null) { @@ -461,7 +463,8 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { if (sharedElementState != null) { Matrix tempMatrix = new Matrix(); RectF tempRect = new RectF(); - for (int i = 0; i < mSharedElementNames.size(); i++) { + final int numSharedElements = mSharedElements.size(); + for (int i = 0; i < numSharedElements; i++) { View sharedElement = mSharedElements.get(i); String name = mSharedElementNames.get(i); SharedElementOriginalState originalState = getOldSharedElementState(sharedElement, @@ -471,12 +474,16 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { tempMatrix, tempRect, null); } } - mListener.onSharedElementStart(mSharedElementNames, mSharedElements, snapshots); + if (mListener != null) { + mListener.onSharedElementStart(mSharedElementNames, mSharedElements, snapshots); + } return originalImageState; } protected void notifySharedElementEnd(ArrayList snapshots) { - mListener.onSharedElementEnd(mSharedElementNames, mSharedElements, snapshots); + if (mListener != null) { + mListener.onSharedElementEnd(mSharedElementNames, mSharedElements, snapshots); + } } protected void scheduleSetSharedElementEnd(final ArrayList snapshots) { @@ -544,7 +551,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { if (sharedElementBundle != null) { Parcelable parcelable = sharedElementBundle.getParcelable(KEY_SNAPSHOT); View snapshot = null; - if (parcelable != null) { + if (parcelable != null && mListener != null) { snapshot = mListener.onCreateSnapshotView(context, parcelable); } if (snapshot != null) { @@ -659,7 +666,11 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { sharedElementBundle.putFloat(KEY_TRANSLATION_Z, view.getTranslationZ()); sharedElementBundle.putFloat(KEY_ELEVATION, view.getElevation()); - Parcelable bitmap = mListener.onCaptureSharedElementSnapshot(view, tempMatrix, tempBounds); + Parcelable bitmap = null; + if (mListener != null) { + bitmap = mListener.onCaptureSharedElementSnapshot(view, tempMatrix, tempBounds); + } + if (bitmap != null) { sharedElementBundle.putParcelable(KEY_SNAPSHOT, bitmap); } diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java index 16a3575933eb9..216d6bab38ad4 100644 --- a/core/java/android/app/EnterTransitionCoordinator.java +++ b/core/java/android/app/EnterTransitionCoordinator.java @@ -306,7 +306,9 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { ArrayList rejectedNames = new ArrayList(mAllSharedElementNames); rejectedNames.removeAll(mSharedElementNames); ArrayList rejectedSnapshots = createSnapshots(sharedElementState, rejectedNames); - mListener.onRejectSharedElements(rejectedSnapshots); + if (mListener != null) { + mListener.onRejectSharedElements(rejectedSnapshots); + } startRejectedAnimations(rejectedSnapshots); // Now start shared element transition diff --git a/core/java/android/app/ExitTransitionCoordinator.java b/core/java/android/app/ExitTransitionCoordinator.java index 812dfdb41d744..d4d3eda91e75b 100644 --- a/core/java/android/app/ExitTransitionCoordinator.java +++ b/core/java/android/app/ExitTransitionCoordinator.java @@ -181,7 +181,10 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { }); setGhostVisibility(View.INVISIBLE); scheduleGhostVisibilityChange(View.INVISIBLE); - mListener.onSharedElementEnd(mSharedElementNames, mSharedElements, sharedElementSnapshots); + if (mListener != null) { + mListener.onSharedElementEnd(mSharedElementNames, mSharedElements, + sharedElementSnapshots); + } TransitionManager.beginDelayedTransition(decorView, transition); scheduleGhostVisibilityChange(View.VISIBLE); setGhostVisibility(View.VISIBLE);