我似乎无法在可绘制文件夹中引用我的图像。我那里有图像,但是我不断收到错误消息,指出我无法将 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;
}
}
您需要执行以下操作:
marker = getResources().getDrawable(R.drawable.restaurant);
您收到消息“The method getResources() is undefined for the type PlaceOverlayItem”的原因是因为 getResources() 是从 Context 类继承的方法,因此您必须从 Activity(或其他)调用它或传递上下文按照你的方法。
希望这有帮助
我想你想要这样的东西:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.restaurant);
this.marker = bitmap;
或者,使用您的解决方案:
marker = getResources().getDrawable(R.drawable.restaurant);
R.drawable.restaurant
是一个常量int,它保存了可绘制资源resturant的id,它不是一个Drawable对象。
Kotlin 版本
要将可绘制对象转换为位图,只需使用此代码块
val largeIcon = BitmapFactory.decodeResource(applicationContext.resources, R.drawable.my_large_icon)
这是此问题的更新答案。
image.background = getDrawable(context, R.drawable.your_drawable)