gpt4 book ai didi

java - 安卓/Java : failure passing Canvas as a class constructor parameter

转载 作者:行者123 更新时间:2023-12-01 11:21:55 24 4
gpt4 key购买 nike

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

我们从这里开始

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

..然后转到 Plotter 创建它的实例:

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

int dotsPerPx; //This one gets set to 1, as supposed
Canvas canvas; //And this remains null, though canvas_==openGLCanvas{...}
int screenWidth = canvas.getWidth(); //NullPointerException!

出了什么问题?

最佳答案

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;

基本上,构造函数和方法之外的所有代码(字段创建、初始化 block )都会在调用构造函数之前执行。因此, int screenWidth = canvas.getWidth(); 尝试调用 null 字段上的方法(默认情况下,除非您指定其他内容),因为尚未调用构造函数。

关于java - 安卓/Java : failure passing Canvas as a class constructor parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31123142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com