Я получаю сообщение об ошибке «не могу конвертировать из int в Drawable» Я пытаюсь назначить изображение местам. Есть ли способ обойти это? - PullRequest
6 голосов
/ 15 марта 2012

Я не могу сослаться на свое изображение в папке для рисования.У меня есть изображение, но я получаю сообщение об ошибке, в котором говорится, что я не могу преобразовать int в Drawable.В моем сгенерированном файле R.java есть строка для изображения, однако она установлена ​​как "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;
    }
}

Ответы [ 3 ]

18 голосов
/ 15 марта 2012

Вам нужно сделать следующее:

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

Причина, по которой вы получаете сообщение «Метод getResources () не определен для типа PlaceOverlayItem», заключается в том, что getResources () является методом, унаследованным от класса Context, поэтому вы должны вызывать его из Activity (или около того) или передать контекст вашего метода.

Надеюсь, это поможет

7 голосов
/ 15 марта 2012

Я думаю, вы хотите что-то вроде этого:

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

Или, используя ваше решение:

marker = getResources().getDrawable(R.drawable.restaurant);
0 голосов
/ 15 марта 2012

R.drawable.restaurant - это константа int, которая содержит идентификатор извлекаемого ресурса resturant , это не объект Drawable.

...