From 5c2d8f7d51d5a944459ddc61034854c6cef7a639 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Mon, 5 Jan 2015 12:56:45 -0800 Subject: [PATCH] Don't override dialog icon drawable unless valid resource ID was set Fixes a regression where Builder.setIcon(Drawable) would get overridden even when Builder.setIcon(int) had never been called and was still 0. Fixes attribute id to respect all valid resource IDs (e.g. non-zero). Updates documentation to reflect the long-standing override behavior. BUG: 18904762 Change-Id: I905703993a59910555d5a858e0aaecab63221a02 --- core/java/android/app/AlertDialog.java | 8 +++++++- core/java/com/android/internal/app/AlertController.java | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/AlertDialog.java b/core/java/android/app/AlertDialog.java index 4ce78357f352d..3c6458fc26742 100644 --- a/core/java/android/app/AlertDialog.java +++ b/core/java/android/app/AlertDialog.java @@ -466,6 +466,8 @@ public class AlertDialog extends Dialog implements DialogInterface { /** * Set the resource id of the {@link Drawable} to be used in the title. + *

+ * Takes precedence over values set using {@link #setIcon(Drawable)}. * * @return This Builder object to allow for chaining of calls to set methods */ @@ -485,7 +487,11 @@ public class AlertDialog extends Dialog implements DialogInterface { } /** - * Set an icon as supplied by a theme attribute. e.g. android.R.attr.alertDialogIcon + * Set an icon as supplied by a theme attribute. e.g. + * {@link android.R.attr#alertDialogIcon}. + *

+ * Takes precedence over values set using {@link #setIcon(int)} or + * {@link #setIcon(Drawable)}. * * @param attrId ID of a theme attribute that points to a drawable resource. */ diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java index 35e03c3b7a802..20d209f081dd5 100644 --- a/core/java/com/android/internal/app/AlertController.java +++ b/core/java/com/android/internal/app/AlertController.java @@ -955,10 +955,10 @@ public class AlertController { if (mIcon != null) { dialog.setIcon(mIcon); } - if (mIconId >= 0) { + if (mIconId != 0) { dialog.setIcon(mIconId); } - if (mIconAttrId > 0) { + if (mIconAttrId != 0) { dialog.setIcon(dialog.getIconAttributeResId(mIconAttrId)); } }