OSDN Git Service

Fix crash on density / font change in NotificationGuts.gutsContent
authorMady Mellor <madym@google.com>
Thu, 26 Jan 2017 19:58:56 +0000 (11:58 -0800)
committerMady Mellor <madym@google.com>
Thu, 26 Jan 2017 19:58:56 +0000 (11:58 -0800)
There were two issues:

1) The mGutsMenuItem wasn’t getting nulled out correctly
2) There was no check for guts != null when seeing if there were
   exposed guts, this meant the bind would happen when there were no
   guts exposed, because mGutsMenuItem wasn’t nulled out correctly, it
   would be out of date / still attached to a parent.

Test: Manually tried:
1) Have notifications that *haven’t* had guts revealed
2) Change screen density

1) Have notifications, reveal some of their guts
2) Change screen density

Bug: 34737513
Change-Id: Iff0a782c9377aec973eb07645e852bc320dbb101

packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java

index 9a5e783..b92daf7 100644 (file)
@@ -970,7 +970,8 @@ public abstract class BaseStatusBar extends SystemUI implements
         ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
         for (int i = 0; i < activeNotifications.size(); i++) {
             Entry entry = activeNotifications.get(i);
-            boolean exposedGuts = entry.row.getGuts() == mNotificationGutsExposed;
+            boolean exposedGuts = mNotificationGutsExposed != null
+                    && entry.row.getGuts() == mNotificationGutsExposed;
             entry.row.reInflateViews();
             if (exposedGuts) {
                 mNotificationGutsExposed = entry.row.getGuts();
@@ -1072,6 +1073,7 @@ public abstract class BaseStatusBar extends SystemUI implements
                 mStackScroller.onHeightChanged(row, !isPanelFullyCollapsed() /* needsAnimation */);
             }
             mNotificationGutsExposed = null;
+            mGutsMenuItem = null;
         });
 
         if (item.gutsContent instanceof SnoozeGutsContent) {