2013-06-18 4 views
0

Так что я пытаюсь сделать, это анимировать ящик в android. В моей drawView.java у меня естьанимация коробки в android получение исключения nullpointer

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); 

} 

В методе OnCreate в MainActivity у меня есть следующий код. Где DV - объект, вызывающий класс DrawView DV; Я получаю NULLPOINTER при вызове DV.box (x1, x2, y1, y2). Как исправить это и почему я получаю эту ошибку?

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); 

Весь смысл наличия окна метода, поэтому я могу переопределить предыдущий блок, чтобы я мог нарисовать совершенно новый. Я делаю это неправильно? Есть ли другой способ сделать это?

ответ

2

своп две линии:

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

так, что инстанцировании DV перед ссылкой на нее.

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

Кроме того, это стандартное соглашение Java для переменных и полей, начиная с нижнего регистра.

1

Вы просто должны создать объект DV перед вызовом этого метода окна:

DV = new DrawView(this); 
DV.box(x1, x2, y1, y2); 
Смежные вопросы