0

所以我想做的是在android中为一个盒子制作动画。在我的 drawView.java 我有

    public void box(int x1, int x2, int y1, int y2) {

    paint.setColor(Color.WHITE);
    paint.setStrokeWidth(3);
    canvas.drawLine(x1, y1, x2, y1, paint);


    canvas.drawLine(x1, y2, x2, y2, paint);

    canvas.drawLine(x1, y1, x1, y2, paint);

    canvas.drawLine(x2, y1, x2, y2, paint);

}

在 MainActivity 的 onCreate 方法中,我有以下代码。其中 DV 是调用 DrawView DV 类的对象;当我调用 DV.box(x1,x2,y1,y2) 时,我收到一个 NULLPOINTER。我该如何解决这个问题,为什么会出现这个错误?

    Display display = getWindowManager().getDefaultDisplay(); 
    x1 = display.getWidth()/3;
    y1 = display.getHeight()/3;
    x2 = display.getWidth()-display.getWidth()/3;
    y2 = display.getHeight()- display.getHeight()/3;
    DV.box(x1, x2, y1, y2);
    DV = new DrawView(this);
    preview.addView(DV);

拥有方法框的全部意义在于我可以覆盖前一个框,这样我就可以绘制一个全新的框。我做错了吗?还有其他方法可以做到这一点吗?

4

2 回答 2

2

交换两行:

DV.box(x1, x2, y1, y2);
DV = new DrawView(this);

以便您DV在引用它之前进行实例化。

DV = new DrawView(this);
DV.box(x1, x2, y1, y2);

此外,变量和字段以小写字母开头是标准的 Java 约定。

于 2013-06-18T00:25:33.563 回答
1

您只需在调用该框方法之前创建 DV 对象:

 DV = new DrawView(this);
 DV.box(x1, x2, y1, y2);
于 2013-06-18T00:27:30.883 回答