diff options
| author | George Mount <mount@google.com> | 2014-04-30 14:27:31 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-04-30 14:27:31 +0000 |
| commit | 7f89c9b8e6724e4316c294eb9f0dde4a46b61e87 (patch) | |
| tree | ddc38340545591fe1e71312e8cc17b8dc6f590a7 /core | |
| parent | 8f72e8967ba08bdb9f7198e9aee6d8b4e9708b19 (diff) | |
| parent | d64616e8d2b8fe0e4b5385085e3d213d0b1147a1 (diff) | |
| download | frameworks_base-7f89c9b8e6724e4316c294eb9f0dde4a46b61e87.zip frameworks_base-7f89c9b8e6724e4316c294eb9f0dde4a46b61e87.tar.gz frameworks_base-7f89c9b8e6724e4316c294eb9f0dde4a46b61e87.tar.bz2 | |
Merge "Fix NPE when going "back" from Activity Transition."
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/app/ActivityTransitionCoordinator.java | 16 | ||||
| -rw-r--r-- | core/java/android/app/EnterTransitionCoordinator.java | 8 |
2 files changed, 15 insertions, 9 deletions
diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java index f96c3e3..3c1455b 100644 --- a/core/java/android/app/ActivityTransitionCoordinator.java +++ b/core/java/android/app/ActivityTransitionCoordinator.java @@ -206,6 +206,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { private ResultReceiver mRemoteResultReceiver; private boolean mNotifiedSharedElementTransitionComplete; private boolean mNotifiedExitTransitionComplete; + private boolean mSharedElementTransitionStarted; private FixedEpicenterCallback mEpicenterCallback = new FixedEpicenterCallback(); @@ -250,7 +251,11 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { onPrepareRestore(); break; case MSG_EXIT_TRANSITION_COMPLETE: - onRemoteSceneExitComplete(); + if (!mSharedElementTransitionStarted) { + send(resultCode, resultData); + } else { + onRemoteSceneExitComplete(); + } break; case MSG_TAKE_SHARED_ELEMENTS: ArrayList<String> sharedElementNames @@ -456,9 +461,13 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { mTargetSharedNames.clear(); if (sharedElements == null) { ArrayMap<String, View> map = new ArrayMap<String, View>(); - setViewVisibility(mEnteringViews, View.VISIBLE); + if (getViewsTransition() != null) { + setViewVisibility(mEnteringViews, View.VISIBLE); + } getDecor().findSharedElements(map); - setViewVisibility(mEnteringViews, View.INVISIBLE); + if (getViewsTransition() != null) { + setViewVisibility(mEnteringViews, View.INVISIBLE); + } for (int i = 0; i < map.size(); i++) { View view = map.valueAt(i); String name = map.keyAt(i); @@ -582,6 +591,7 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { getDecor().getViewTreeObserver().removeOnPreDrawListener(this); mListener.onCaptureSharedElementEnd(mTargetSharedNames, mSharedElements, acceptedOverlayViews); + mSharedElementTransitionStarted = true; return true; } } diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java index 0798529..c26e68a 100644 --- a/core/java/android/app/EnterTransitionCoordinator.java +++ b/core/java/android/app/EnterTransitionCoordinator.java @@ -135,11 +135,6 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator } @Override - protected void onRemoteSceneExitComplete() { - super.onRemoteSceneExitComplete(); - } - - @Override protected void onTakeSharedElements(ArrayList<String> sharedElementNames, Bundle state) { mEnteringSharedElementNames = new ArrayList<String>(); mEnteringSharedElementNames.addAll(sharedElementNames); @@ -149,6 +144,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator @Override protected void sharedElementTransitionComplete(Bundle bundle) { notifySharedElementTransitionComplete(bundle); + exitAfterSharedElementTransition(); } @Override @@ -280,7 +276,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator } private void exitAfterSharedElementTransition() { - if (mSharedElementTransitionComplete && mExitTransitionComplete) { + if (mSharedElementTransitionComplete && mExitTransitionComplete && mBackgroundFadedOut) { mActivity.finish(); if (mSupportsTransition) { mActivity.overridePendingTransition(0, 0); |
