Also reset mBadgeScale to 0 when recycling view.
When left as 1f, the drawBadgeIfNecessary thinks that there
is still a badge -- which results in a NPE when trying to draw
the badge.
Bug: 68324671
Change-Id: I4eedb5825b3a6429c99de0466a77d368a39b1951
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java
index f20baea..5bdc4ed 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -183,6 +183,7 @@
public void reset() {
mBadgeInfo = null;
mBadgePalette = null;
+ mBadgeScale = 0f;
mForceHideBadge = false;
}
diff --git a/src/com/android/launcher3/badge/BadgeRenderer.java b/src/com/android/launcher3/badge/BadgeRenderer.java
index c2cc215..6ce334e 100644
--- a/src/com/android/launcher3/badge/BadgeRenderer.java
+++ b/src/com/android/launcher3/badge/BadgeRenderer.java
@@ -26,6 +26,7 @@
import android.graphics.Rect;
import android.graphics.Shader;
import android.support.annotation.Nullable;
+import android.util.Log;
import android.util.SparseArray;
import com.android.launcher3.R;
@@ -38,6 +39,8 @@
*/
public class BadgeRenderer {
+ private static final String TAG = "BadgeRenderer";
+
private static final boolean DOTS_ONLY = true;
// The badge sizes are defined as percentages of the app icon size.
@@ -95,6 +98,10 @@
*/
public void draw(Canvas canvas, IconPalette palette, @Nullable BadgeInfo badgeInfo,
Rect iconBounds, float badgeScale, Point spaceForOffset) {
+ if (palette == null || iconBounds == null || spaceForOffset == null) {
+ Log.e(TAG, "Invalid null argument(s) passed in call to draw.");
+ return;
+ }
mTextPaint.setColor(palette.textColor);
IconDrawer iconDrawer = badgeInfo != null && badgeInfo.isIconLarge()
? mLargeIconDrawer : mSmallIconDrawer;