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; + } }