Android:BitmapFactory.decodeResource返回null

我似乎无法弄清楚这一点。 我有2个具有不同特性的java类,每个调用BitmapFactory.decodeResource来获得相同的图像资源,一个返回位图,而另一个返回null。 两个类都在同一个包中。

这里是工作的类,它调用BitmapFactory.decodeResource返回位图。 我只包括相关的代码。

package advoworks.test; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Rect; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MainScreen extends SurfaceView implements SurfaceHolder.Callback { private static final String TAG = MainScreen.class.getSimpleName(); public MainScreen(Context context) { super(context); Bitmap bitmap; bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.droid_1); //adding the callback (this) to the surface holder to intercept events; getHolder().addCallback(this); // make the GamePanel focusable so it can handle events setFocusable(true); } } 

这是不起作用的课程。 BitmapFactory.decodeResource在debugging中返回NULL。 我只包括我觉得是相关的代码。

 package advoworks.test; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.util.Log; public class Segment { private int x; private int y; private Bitmap bitmap; public Segment(int x, int y) { Log.d(TAG, "Creating Segment"); try { this.bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.droid_1); } catch (Exception e) { Log.d(TAG,"Error is " + e); } this.x = x; this.y = y; Log.d(TAG, "Created Segment"); } } 

任何线索任何人?

Solutions Collecting From Web of "Android:BitmapFactory.decodeResource返回null"

getResources()是一个Context类方法,并且不在Segment类中使用上下文。 它是如何工作的。 你应该调用getApplicationContext().getResources()

您应该将上下文传递给Segment构造函数。

 public Segment(Context context, int x, int y) { .... bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.droid_1); .... } 

检查你的图像的分辨率,如果它太大,BitmapFactory.decodeResource将只返回null(没有例外)