所以我想做的是在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);


拥有方法框的全部目的是,我可以覆盖前一个框,以便绘制一个全新的框。我做错了吗?还有另一种方法吗?

最佳答案

交换两行:

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


这样您就可以在引用DV之前实例化它。

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


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

10-08 02:09