drawBitmap nullpointerexception

时间:2013-05-12 07:57:42

标签: android nullpointerexception drawbitmap

这是我的班..我想在我的简单游戏GameEngine中使用它...但是我不明白这里的问题..它不起作用..

public class Droid {

    private Bitmap      bitmap; 
    private int     x;      
    private int     y;      
    private boolean         touched;    
    private Speed       speed;
    private Paint       paint;

    public Droid(Resources resources, Bitmap bitmap, int x, int y)
        {
            this.bitmap = bitmap;
            this.x = x;
            this.y = y;

            // create droid and load bitmap
            bitmap = BitmapFactory.decodeResource(resources,
                    R.drawable.droid_1);

        }

              public void draw(Canvas canvas)
        {

            canvas.drawBitmap(bitmap, x - bitmap.getWidth() / 2,
                    y- bitmap.getHeight() / 2, paint);
        }



     }

当ı运行代码时,ı在nullpointerexception方法中查看draw() ...怎么能解决这个问题?谢谢你的帮助...

2 个答案:

答案 0 :(得分:0)

MainActivity

    public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    MyView mv = new MyView(this,bmp,100,100); 
            // pass the bitmap and x and y co-ordinates to the constructor of Myview
    setContentView(mv); // set the content to your activity
}
  }

自定义视图类

  public class MyView extends View{ // should extend view
 Context c;
 private Bitmap   bitmap; 
 private int     x;      
 private int     y; 
 private Paint       paint;
 public MyView(Context context,Bitmap bmp, int i, int j) {
    super(context);
    // TODO Auto-generated constructor stub
    this.c=context;
    this.bitmap=bmp;
    this.x=i;
    this.y=j;
    paint= new Paint();
}
@Override
    public void draw(Canvas canvas) // override view on draw and draw the bitmap
    {

    canvas.drawBitmap(bitmap, x - bitmap.getWidth() / 2,
             y- bitmap.getHeight() / 2, paint); // instead of paint you can have null
    }
} 

答案 1 :(得分:0)

//ı希望,ı解决了这个问题..终于...... :)

公共课Droid {

private Bitmap      bitmap; 
private int     x;      
private int     y;      
private boolean         touched;    
private Speed       speed;
private Paint       paint;

public Droid(Resources resources, Bitmap bitmap, int x, int y)
    {
        paint= new Paint();
//    this.bitmap = bitmap;   // delete this part, it will work..  :)))
    this.x = x;
    this.y = y;

        // create droid and load bitmap
        bitmap = BitmapFactory.decodeResource(resources,
                R.drawable.droid_1);

    }

          public void draw(Canvas canvas)
    {

        canvas.drawBitmap(bitmap, x - bitmap.getWidth() / 2,
                y- bitmap.getHeight() / 2, paint);
    }



 }