diff options
| author | George Mount <mount@google.com> | 2017-03-02 15:12:26 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-03-02 15:12:30 +0000 |
| commit | 0882330c39dfefe4473bbefe20f479989cbb71ca (patch) | |
| tree | 36f7d4517d8ce416e987d61556a12256b2f27391 /core/java | |
| parent | 00a5f2a65882f5b2814c9449e0ab75b6f2656315 (diff) | |
| parent | f05db56f242da7a0bd3770d69eb816091b303d3d (diff) | |
Merge "Fix NPE when combining pop with add transaction."
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/FragmentTransition.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/core/java/android/app/FragmentTransition.java b/core/java/android/app/FragmentTransition.java index f62ab8d76c3c..780a9227cecc 100644 --- a/core/java/android/app/FragmentTransition.java +++ b/core/java/android/app/FragmentTransition.java @@ -780,8 +780,10 @@ class FragmentTransition { names = inTransaction.mSharedElementTargetNames; } - inSharedElements.retainAll(names); - if (sharedElementCallback != null) { + if (names != null) { + inSharedElements.retainAll(names); + } + if (names != null && sharedElementCallback != null) { sharedElementCallback.onMapSharedElements(names, inSharedElements); for (int i = names.size() - 1; i >= 0; i--) { String name = names.get(i); @@ -830,8 +832,9 @@ class FragmentTransition { FragmentContainerTransition fragments, Transition enterTransition, boolean inIsPop) { BackStackRecord inTransaction = fragments.lastInTransaction; - if (enterTransition != null && inTransaction.mSharedElementSourceNames != null && - !inTransaction.mSharedElementSourceNames.isEmpty()) { + if (enterTransition != null && inSharedElements != null + && inTransaction.mSharedElementSourceNames != null + && !inTransaction.mSharedElementSourceNames.isEmpty()) { final String targetName = inIsPop ? inTransaction.mSharedElementSourceNames.get(0) : inTransaction.mSharedElementTargetNames.get(0); @@ -1096,7 +1099,9 @@ class FragmentTransition { if (transition != null) { viewList = new ArrayList<>(); View root = fragment.getView(); - root.captureTransitioningViews(viewList); + if (root != null) { + root.captureTransitioningViews(viewList); + } if (sharedElements != null) { viewList.removeAll(sharedElements); } |
