diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 7209d9dca9..5ac53a88c1 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2239,6 +2239,7 @@ public class Launcher extends BaseActivity // Clear the workspace because it's going to be rebound mWorkspace.clearDropTargets(); mWorkspace.removeAllWorkspaceScreens(); + mAppWidgetHost.clearViews(); if (mHotseat != null) { mHotseat.resetLayout(); diff --git a/src/com/android/launcher3/LauncherAppWidgetHost.java b/src/com/android/launcher3/LauncherAppWidgetHost.java index 7bc713922b..56671a1582 100644 --- a/src/com/android/launcher3/LauncherAppWidgetHost.java +++ b/src/com/android/launcher3/LauncherAppWidgetHost.java @@ -236,7 +236,7 @@ public class LauncherAppWidgetHost extends AppWidgetHost { } @Override - protected void clearViews() { + public void clearViews() { super.clearViews(); mViews.clear(); } diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java index 0b1474a037..9d74218e04 100644 --- a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java +++ b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java @@ -488,13 +488,14 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView // Only reinflate when the final configuration is same as the required configuration if (mReinflateOnConfigChange && isSameOrientation()) { mReinflateOnConfigChange = false; - if (isAttachedToWindow()) { - reInflate(); - } + reInflate(); } } public void reInflate() { + if (!isAttachedToWindow()) { + return; + } LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) getTag(); // Remove and rebind the current widget (which was inflated in the wrong // orientation), but don't delete it from the database