From 98362d0ee0e6c6f4142fc8003b9d3310a82105bc Mon Sep 17 00:00:00 2001 From: Yi-Ling Chuang Date: Fri, 7 May 2021 11:44:50 +0800 Subject: [PATCH] Merge existing bundle with ActivityOptions Use Bundle.putAll() to take both the bundle passed in to the startActivity(Intent, Bundle) and also the new created ActivityOptions bundle, so no extra info will be lost. Test: rebuild and add log to make sure all bundle info are kept Bug: 187471344 Change-Id: I802e17893b86fd4eacb812b4a7ab20b5167790fe --- .../SettingsTransitionActivity.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java index c47638ac239b0..b4fe7ed1a8fb0 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java @@ -78,6 +78,10 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { super.startActivity(intent, options); return; } + if (options != null) { + super.startActivity(intent, getMergedBundleForTransition(options)); + return; + } super.startActivity(intent, getActivityOptionsBundle(toolbar)); } @@ -110,6 +114,11 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { super.startActivityForResult(intent, requestCode, options); return; } + if (options != null) { + super.startActivityForResult(intent, requestCode, + getMergedBundleForTransition(options)); + return; + } super.startActivityForResult(intent, requestCode, getActivityOptionsBundle(toolbar)); } @@ -133,4 +142,15 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { return ActivityOptions.makeSceneTransitionAnimation(this, toolbar, "shared_element_view").toBundle(); } + + private Bundle getMergedBundleForTransition(@NonNull Bundle options) { + final Toolbar toolbar = getToolbar(); + final Bundle mergedBundle = new Bundle(); + mergedBundle.putAll(options); + final Bundle activityOptionsBundle = getActivityOptionsBundle(toolbar); + if (activityOptionsBundle != null) { + mergedBundle.putAll(activityOptionsBundle); + } + return mergedBundle; + } }