From 175559a28b3df7573d00db1fb707d82b2099b4be Mon Sep 17 00:00:00 2001 From: Min Yun Date: Fri, 17 Jun 2016 11:59:24 -0700 Subject: [PATCH] Fix guts are not bound properly. When binding importance to guts, applying findViewById to ExpandableNotificationRow of group's parents could cause to return the reference of child notications's guts which also has the same id. As a result guts are not bound properly, and show weird guts. Fixes: 29452827 Change-Id: Iaf8ee74b988bf41680857e9c3c3ae9e3bd8e4e1b --- .../com/android/systemui/statusbar/BaseStatusBar.java | 9 +++++---- .../com/android/systemui/statusbar/NotificationGuts.java | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index eb69f55f0cf51..b50555d817519 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -1083,8 +1083,8 @@ public abstract class BaseStatusBar extends SystemUI implements pkgicon = pmUser.getDefaultActivityIcon(); } - ((ImageView) row.findViewById(R.id.app_icon)).setImageDrawable(pkgicon); - ((TextView) row.findViewById(R.id.pkgname)).setText(appname); + ((ImageView) guts.findViewById(R.id.app_icon)).setImageDrawable(pkgicon); + ((TextView) guts.findViewById(R.id.pkgname)).setText(appname); final View settingsButton = guts.findViewById(R.id.more_settings); if (appUid >= 0) { @@ -1100,8 +1100,9 @@ public abstract class BaseStatusBar extends SystemUI implements settingsButton.setVisibility(View.GONE); } - guts.bindImportance(pmUser, sbn, row, mNotificationData.getImportance(sbn.getKey())); - row.findViewById(R.id.done).setOnClickListener(new View.OnClickListener() { + guts.bindImportance(pmUser, sbn, mNotificationData.getImportance(sbn.getKey())); + + guts.findViewById(R.id.done).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // If the user has security enabled, show challenge if the setting is changed. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java index 5bbca1552a149..5eef805ca95c2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java @@ -173,7 +173,7 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab } void bindImportance(final PackageManager pm, final StatusBarNotification sbn, - final ExpandableNotificationRow row, final int importance) { + final int importance) { mINotificationManager = INotificationManager.Stub.asInterface( ServiceManager.getService(Context.NOTIFICATION_SERVICE)); mStartingUserImportance = NotificationListenerService.Ranking.IMPORTANCE_UNSPECIFIED; @@ -191,8 +191,8 @@ public class NotificationGuts extends LinearLayout implements TunerService.Tunab // unlikely. } - final View importanceSlider = row.findViewById(R.id.importance_slider); - final View importanceButtons = row.findViewById(R.id.importance_buttons); + final View importanceSlider = findViewById(R.id.importance_slider); + final View importanceButtons = findViewById(R.id.importance_buttons); if (mShowSlider) { bindSlider(importanceSlider, systemApp); importanceSlider.setVisibility(View.VISIBLE);