diff --git a/lib/java/com/google/android/material/navigation/NavigationBarItemView.java b/lib/java/com/google/android/material/navigation/NavigationBarItemView.java index cfdee9e838c..de6e84195b7 100644 --- a/lib/java/com/google/android/material/navigation/NavigationBarItemView.java +++ b/lib/java/com/google/android/material/navigation/NavigationBarItemView.java @@ -33,6 +33,7 @@ import androidx.appcompat.view.menu.MenuView; import androidx.appcompat.widget.TooltipCompat; import android.text.TextUtils; +import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -774,6 +775,13 @@ public void setActiveIndicatorResizeable(boolean resizeable) { } void setBadge(@NonNull BadgeDrawable badgeDrawable) { + if (this.badgeDrawable == badgeDrawable) { + return; + } + if (hasBadge() && icon != null) { + Log.w("NavigationBar", "Multiple badges shouldn't be attached to one item."); + tryRemoveBadgeFromAnchor(icon); + } this.badgeDrawable = badgeDrawable; if (icon != null) { tryAttachBadgeToAnchor(icon); diff --git a/lib/java/com/google/android/material/navigation/NavigationBarMenuView.java b/lib/java/com/google/android/material/navigation/NavigationBarMenuView.java index 497d6836c06..e7775465355 100644 --- a/lib/java/com/google/android/material/navigation/NavigationBarMenuView.java +++ b/lib/java/com/google/android/material/navigation/NavigationBarMenuView.java @@ -797,7 +797,7 @@ void restoreBadgeDrawables(SparseArray badgeDrawables) { } if (buttons != null) { for (NavigationBarItemView itemView : buttons) { - itemView.setBadge(badgeDrawables.get(itemView.getId())); + itemView.setBadge(this.badgeDrawables.get(itemView.getId())); } } }