java.lang.ClassCastException:android.graphics.drawable.BitmapDrawable无法转换为android.graphics.drawable.LayerDrawable [英] java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.graphics.drawable.LayerDrawable
问题描述
错误: setBadgeCount(this,icon,"0");
这是我的代码:
MenuItem itemCart = menu.findItem(R.id.action_cart);
LayerDrawable icon = (LayerDrawable) itemCart.getIcon();
// Update LayerDrawable's BadgeDrawable
setBadgeCount(this,icon ,"0");
您会得到ClassCastException
,因为您的MenuItem
返回的不是BitmapDrawable
,因此可以从MenuItem
返回的BitmapDrawable
中创建LayerDrawable
/p>
根据此答案( https://stackoverflow.com/a/20138871/4142087 )或官方<一个href ="https://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html" rel ="nofollow noreferrer">文档,您可以这样操作:
BitmapDrawable iconBitmap = (BitmapDrawable) itemCart.getIcon();
LayerDrawable iconLayer = new LayerDrawable(new Drawable [] { iconBitmap });
setBadgeCount(this, iconLayer, "0");
error is generated on these code : setBadgeCount(this,icon ,"0");
here is my code:
MenuItem itemCart = menu.findItem(R.id.action_cart);
LayerDrawable icon = (LayerDrawable) itemCart.getIcon();
// Update LayerDrawable's BadgeDrawable
setBadgeCount(this,icon ,"0");
You get ClassCastException
because your MenuItem
returns not BitmapDrawable
, you can create LayerDrawable
from BitmapDrawable
you get from MenuItem
According to this answer (https://stackoverflow.com/a/20138871/4142087), or official documentation you can do it this way:
BitmapDrawable iconBitmap = (BitmapDrawable) itemCart.getIcon();
LayerDrawable iconLayer = new LayerDrawable(new Drawable [] { iconBitmap });
setBadgeCount(this, iconLayer, "0");
这篇关于java.lang.ClassCastException:android.graphics.drawable.BitmapDrawable无法转换为android.graphics.drawable.LayerDrawable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!