gpt4 book ai didi

Java 类成员未在构造函数中初始化?

转载 作者:行者123 更新时间:2023-11-29 20:52:08 25 4
gpt4 key购买 nike

我正在尝试在 Android 中制作自定义 View 。调用 onDraw() 时,类成员 r 似乎没有初始化。但是 paint 仍然成功初始化(如果我从构造函数中删除该行,应用程序将强制关闭)。在最后一行,我有 Canvas 绘制 r1,它成功并绘制了一个蓝色矩形。如果我用 r 替换 r1,它就是白色的。

这是我的问题的简化版本。我一直在为在构造函数中初始化的数组成员获取空指针异常。但无论如何,问题似乎都是一样的。为什么它不保持实例化?

public class ColorListView extends View {
Paint paint;
Rect r;

public ColorListView (Context context, AttributeSet attrs){
super(context, attrs);
paint = new Paint();
r = new Rect(0,0,getWidth(),getHeight());
}


protected void onDraw (Canvas canvas){
paint.setColor(Color.BLUE);
Rect r1 = new Rect(0,0,getWidth(),getHeight());
canvas.drawRect(r1, paint); // doesn't work if r is passed to drawRect?
}}

最佳答案

On the last line, I have the canvas draw r1, which succeeds and a blue rectangle is drawn. If I replace r1 with r, it's just white.

r = new Rect(0,0,getWidth(),getHeight());

您可以在构造函数上执行此操作,因为此时 getWidth()getHeight() 返回 0。您必须等到实际测量 View 。关于documenation您可以找到有关 onMeasure 的更多信息回调

关于Java 类成员未在构造函数中初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856127/

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