diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
index 657cdbf..dc1b792 100644
--- a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
+++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
@@ -323,7 +323,7 @@
             fragments.add(personalFragment);
 
             if (managedProfileInfoProvider.getManagedProfile(context) != null) {
-                final Bundle workOnly = bundle != null ? bundle : new Bundle();
+                final Bundle workOnly = bundle != null ? bundle.deepCopy() : new Bundle();
                 workOnly.putInt(EXTRA_PROFILE, ProfileType.WORK);
                 final Fragment workFragment =
                         workFragmentConstructor.constructAndGetFragment();
@@ -333,7 +333,7 @@
 
             if (Flags.allowPrivateProfile()
                     && !privateSpaceInfoProvider.isPrivateSpaceLocked(context)) {
-                final Bundle privateOnly = bundle != null ? bundle : new Bundle();
+                final Bundle privateOnly = bundle != null ? bundle.deepCopy() : new Bundle();
                 privateOnly.putInt(EXTRA_PROFILE, ProfileType.PRIVATE);
                 final Fragment privateFragment =
                         privateFragmentConstructor.constructAndGetFragment();
diff --git a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java
index 056935c..0f0de56 100644
--- a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java
@@ -18,6 +18,7 @@
 
 import static android.content.Intent.EXTRA_USER_ID;
 
+import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.EXTRA_PROFILE;
 import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.PERSONAL_TAB;
 import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.PRIVATE_TAB;
 import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.WORK_TAB;
@@ -255,6 +256,37 @@
         assertThat(fragments).hasLength(3);
     }
 
+    @Test
+    public void testGetFragments_whenAvailableBundle_returnsFragmentsWithCorrectBundles() {
+        mSetFlagsRule.enableFlags(Flags.FLAG_ALLOW_PRIVATE_PROFILE);
+        Bundle bundle = new Bundle();
+        Fragment[] fragments = ProfileSelectFragment.getFragments(
+                mContext,
+                bundle,
+                TestProfileSelectFragment::new,
+                TestProfileSelectFragment::new,
+                TestProfileSelectFragment::new,
+                new ProfileSelectFragment.PrivateSpaceInfoProvider() {
+                    @Override
+                    public boolean isPrivateSpaceLocked(Context context) {
+                        return false;
+                    }
+                },
+                new ProfileSelectFragment.ManagedProfileInfoProvider() {
+                    @Override
+                    public UserHandle getManagedProfile(Context context) {
+                        return new UserHandle(123);
+                    }
+                });
+        assertThat(fragments).hasLength(3);
+        assertThat(fragments[0].getArguments().getInt(EXTRA_PROFILE))
+                .isEqualTo(ProfileSelectFragment.ProfileType.PERSONAL);
+        assertThat(fragments[1].getArguments().getInt(EXTRA_PROFILE))
+                .isEqualTo(ProfileSelectFragment.ProfileType.WORK);
+        assertThat(fragments[2].getArguments().getInt(EXTRA_PROFILE))
+                .isEqualTo(ProfileSelectFragment.ProfileType.PRIVATE);
+    }
+
     public static class TestProfileSelectFragment extends ProfileSelectFragment {
 
         @Override
