From 0df26108c56d1b3826f257eb9a0216ddac97bd8f Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Mon, 3 Apr 2017 11:50:44 -0700 Subject: [PATCH] Make sure to remove child views when recreating notification menu row Test: added NotificationMenuRowTest.testRecreateMenu() + runtest systemui Bug: 36855649 Change-Id: I4045dc292eb2b5a817ae8d2e78cbce50d4d22b41 --- .../android/systemui/statusbar/NotificationMenuRow.java | 3 +++ .../systemui/statusbar/NotificationMenuRowTest.java | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java index 5055dda0d8639..bb82b602afbb4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java @@ -120,6 +120,9 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl @Override public void createMenu(ViewGroup parent) { mParent = (ExpandableNotificationRow) parent; + if (mMenuContainer != null) { + mMenuContainer.removeAllViews(); + } mMenuContainer = new FrameLayout(mContext); for (int i = 0; i < mMenuItems.size(); i++) { addMenuView(mMenuItems.get(i), mMenuContainer); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationMenuRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationMenuRowTest.java index 31b9bae846d9c..efb9fea4f8956 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationMenuRowTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationMenuRowTest.java @@ -44,4 +44,11 @@ public class NotificationMenuRowTest extends LeakCheckedTest { ViewUtils.detachView(row.getMenuView()); TestableLooper.get(this).processAllMessages(); } + + @Test + public void testRecreateMenu() { + NotificationMenuRowPlugin row = new NotificationMenuRow(mContext); + row.createMenu(null); + row.createMenu(null); + } }