繁体   English   中英

我如何使用android中的getResources

[英]How can I use getResources from android

我创建了一个从Overlay扩展的类MiOverlay。

并且它无法识别getResources方法。我该怎么做。 这是我班级的完整代码

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.location.Location;

import com.google.android.maps.MapView;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.Overlay;


public class MiOverlay extends Overlay {
    GeoPoint point;

    public MiOverlay(GeoPoint point)
    {
        super();
        this.point = point;
    }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when){
        super.draw(canvas, mapView, shadow);
        Point scrnPoint = new Point();
        mapView.getProjection().toPixels(this.point, scrnPoint);
        Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        canvas.drawBitmap(marker, scrnPoint.x - marker.getWidth() / 2, scrnPoint.y - marker.getHeight() /2 , null);
        return true;
    }

您属于Non-Activity Class ,因此您必须参考问题中讨论的内容。 但是,由于可能的内存泄漏,建议不要传递Context。 尝试使用getResources()Activity实现您的资源,或者如果您使用的是Fragment ,请使用getActivity().getResources()...

无论如何,你最简单的选择是:

private Context context;
public MiOverlay(GeoPoint point, Context _context)
{
    super();
    this.point = point;
    context = _context;
}

@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when){
    super.draw(canvas, mapView, shadow);
    Point scrnPoint = new Point();
    mapView.getProjection().toPixels(this.point, scrnPoint);
    Bitmap marker = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
    canvas.drawBitmap(marker, scrnPoint.x - marker.getWidth() / 2, scrnPoint.y - marker.getHeight() /2 , null);
    return true;
}

我不同意Luis Lavieri的回答。 最简单的解决方案是使用MapView的上下文:

Bitmap marker = BitmapFactory.decodeResource(mapView.getContext().getResources(), R.drawable.ic_launcher);

容易且没有潜在的内存泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM