diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/fragments/FragmentHostManager.java | 19 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java | 11 |
2 files changed, 19 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/fragments/FragmentHostManager.java b/packages/SystemUI/src/com/android/systemui/fragments/FragmentHostManager.java index 30f6e1affe0a..87d90adceba5 100644 --- a/packages/SystemUI/src/com/android/systemui/fragments/FragmentHostManager.java +++ b/packages/SystemUI/src/com/android/systemui/fragments/FragmentHostManager.java @@ -156,10 +156,7 @@ public class FragmentHostManager { */ protected void onConfigurationChanged(Configuration newConfig) { if (mConfigChanges.applyNewConfig(mContext.getResources())) { - // Save the old state. - Parcelable p = destroyFragmentHost(); - // Generate a new fragment host and restore its state. - createFragmentHost(p); + reloadFragments(); } else { mFragments.dispatchConfigurationChanged(newConfig); } @@ -217,6 +214,13 @@ public class FragmentHostManager { Dependency.get(FragmentService.class).removeAndDestroy(view); } + public void reloadFragments() { + // Save the old state. + Parcelable p = destroyFragmentHost(); + // Generate a new fragment host and restore its state. + createFragmentHost(p); + } + class HostCallbacks extends FragmentHostCallback<FragmentHostManager> { public HostCallbacks() { super(mContext, FragmentHostManager.this.mHandler, 0); @@ -293,13 +297,6 @@ public class FragmentHostManager { reloadFragments(); } - private void reloadFragments() { - // Save the old state. - Parcelable p = destroyFragmentHost(); - // Generate a new fragment host and restore its state. - createFragmentHost(p); - } - Fragment instantiate(Context context, String className, Bundle arguments) { Context extensionContext = mExtensionLookup.get(className); if (extensionContext != null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java index 1429718d5d9c..e7dab8e81133 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -979,6 +979,17 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback public void onNavigationModeChanged(int mode) { mNavBarMode = mode; updateScreenPinningGestures(); + + // Workaround for b/132825155, for secondary users, we currently don't receive configuration + // changes on overlay package change since SystemUI runs for the system user. In this case, + // trigger a new configuration change to ensure that the nav bar is updated in the same way. + int userId = ActivityManagerWrapper.getInstance().getCurrentUserId(); + if (userId != UserHandle.USER_SYSTEM) { + mHandler.post(() -> { + FragmentHostManager fragmentHost = FragmentHostManager.get(mNavigationBarView); + fragmentHost.reloadFragments(); + }); + } } public void disableAnimationsDuringHide(long delay) { |