Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I keep getting an error saying "cannot convert from int to Drawable". I'm trying to assign an image to places. Is there a way of working around this?

I can't seem to reference my image in the drawable folder. I have the image there however i keep getting an error stating that I cannot convert an int to Drawable. my R.java generated file has the string in there for the image however it is set as "public static final int restaurant=0x7f020001;"

package com.CS3040.Places;

import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import com.CS3040.*;
import com.CS3040.Coursework.R;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.OverlayItem;

public class PlaceOverlayItem extends OverlayItem {
    private final GeoPoint point;
    private final Place place;
    private final Drawable marker;

    public PlaceOverlayItem(Place p, String type) {
        super(p.getGeoPoint(), p.getName(), p.getFormatted_address());


        if(type.equals("restaurant")){ this.marker = R.drawable.restaurant;  }

        //super.setMarker(this.marker);
        this.point = p.getGeoPoint();
        this.place = p;
    }

    /**
     * @return the point
     */
    public GeoPoint getPoint() {
        return point;
    }

    /**
     * @return the place
     */
    public Place getPlace() {
        return place;
    }
}
like image 618
user1270217 Avatar asked Mar 14 '12 22:03

user1270217


2 Answers

You need to do as follows:

marker = getResources().getDrawable(R.drawable.restaurant);

The reason you get the message "The method getResources() is undefined for the type PlaceOverlayItem" is because getResources() is a method inherited from Context class, so you got to call it from an Activity (or so) or pass the context to your method.

Hope this helps

like image 152
Zadec Avatar answered Nov 11 '22 12:11

Zadec


I think you want something like this:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.restaurant);
this.marker = bitmap;

Or, using your solution:

marker = getResources().getDrawable(R.drawable.restaurant);
like image 30
Sparky Avatar answered Nov 11 '22 11:11

Sparky