Android: Jak przerysować element graficzny?

Stworzyłem klasę RoundIcon, która rozszerza widok, a klasa zawiera metodę setIconImage ():

<code>public void setIconImage(int imageFromResources) {
    iconImage = BitmapFactory.decodeResource(getResources(), imageFromResources);
    iconWidth = iconImage.getWidth();
    iconHeight = iconImage.getHeight();
    refreshDrawableState();
}
</code>

i jest metoda onDraw ():

<code>@Override
protected void onDraw(Canvas canvas) {

    if(px == 0 || py == 0)
    {
        px = 50;
        py = 50;
    }


    canvas.drawCircle(px, py, circleRadius, circlePaint);
    canvas.save();

    if(iconImage != null)
    {
        int cardinalX = px - iconWidth/2;
        int cardinalY = py - iconHeight/2;
        canvas.drawBitmap(iconImage, cardinalX, cardinalY, iconPaint);
    }

    canvas.restore();
}
</code>

Problem polega na tym, że funkcja onDraw () nie wykonuje się za każdym razem, gdy metoda setIconImage () jest wywoływana z głównej aktywności, a zatem ikona nie zmienia się w interfejsie użytkownika.

Czy ktoś wie, jak zmodyfikować kod, aby przerysować obraz za każdym razem, gdy zostanie wywołana metoda setIconImage?

questionAnswers(2)

yourAnswerToTheQuestion