Android / Java:将Canvas作为类构造函数参数传递失败

时间:2015-06-29 18:41:27

标签: java android canvas constructor

在GraphicsView类的onDraw方法中,我创建了一个Plotter类的实例,但是构造函数没有设置类内的Canvas字段

我们从这里开始

Intent()

..然后去Plotter创建它的实例:

protected void onDraw(Canvas canvas) {
    Plotter plotter = new Plotter(1, canvas);
}

出了什么问题?

1 个答案:

答案 0 :(得分:1)

Canvas尚未实例化。使用此:

Plotter (int dotsPerPx, Canvas canvas_) {
    this.dotsPerPx = dotsPerPx;
    this.canvas = canvas_;
    screenWidth = canvas.getWidth();
}

int dotsPerPx;  //This one sets to 1, as supposed
Canvas canvas;  //And this remains null, though canvas_==openGLCanvas...
int screenWidth;

基本上,构造函数和方法之外的所有代码(字段创建,初始化块)都是在调用构造函数之前执行的。所以int screenWidth = canvas.getWidth();尝试调用null的字段上的方法(默认情况下,除非你指定别的东西),因为还没有调用构造函数。