From c9a5227292ecc24f9735d4ba53cd1f9aaef3e6f4 Mon Sep 17 00:00:00 2001 From: George Mount Date: Wed, 24 Sep 2014 07:31:45 -0700 Subject: [PATCH] Fix NPE when detached View is added as a shared element. Bug 17632940 This won't solve all problems in which the parent becomes null, but it will protect against shared elements being added that aren't attached when mapped. Change-Id: I991722c671c57048aea84b59a3c187c77c93450f --- .../android/app/ActivityTransitionCoordinator.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java index 540376ec5fb72..5455a0fdad980 100644 --- a/core/java/android/app/ActivityTransitionCoordinator.java +++ b/core/java/android/app/ActivityTransitionCoordinator.java @@ -222,8 +222,15 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { if (mListener != null) { mListener.onMapSharedElements(mAllSharedElementNames, sharedElements); } - mSharedElementNames.addAll(sharedElements.keySet()); - mSharedElements.addAll(sharedElements.values()); + int numSharedElements = sharedElements.size(); + for (int i = 0; i < numSharedElements; i++) { + View sharedElement = sharedElements.valueAt(i); + String name = sharedElements.keyAt(i); + if (sharedElement != null && sharedElement.isAttachedToWindow() && name != null) { + mSharedElements.add(sharedElement); + mSharedElementNames.add(name); + } + } if (getViewsTransition() != null && mTransitioningViews != null) { ViewGroup decorView = getDecor(); if (decorView != null) {