Я следовал учебному пособию здесь .
Пока у меня есть Gameview и Gameloop (поток), настроенный нормально, но я только изменил метод run () в моем потоке, и я получаю эту ошибку в logcat:
- ОШИБКА / AndroidRuntime (296): java.lang.NullPointerException
- ОШИБКА / AndroidRuntime (296): на biz.hireholly.tutorial.GameLoop.run (GameLoop.java:76)
Что, я предполагаю, означает, что проблема в строке 76?
это: canvas = this.surfaceHolder.lockCanvas ();
Я прокомментировал это в своем фрагменте кода ниже:
@Override
public void run()
{
Canvas canvas;
Log.d(TAG, "Starting Game Loop");
while (running) {
canvas = null;
//try locking canvas, so only we can edit pixels on surface
try{
canvas = this.surfaceHolder.lockCanvas(); //LINE 76
synchronized (surfaceHolder){
this.gameView.onDraw(canvas);
}
} finally{
//in case of exception,
//surface is not left in an inconsistent state
if (canvas != null){
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
См. Весь код класса GameLoop здесь: http://pastebin.com/kfTy9vzY
И мой класс GameView вы можете увидеть здесь: http://pastebin.com/BkmnrUPU
(они оба довольно короткие)
Я уже несколько дней пытаюсь понять это с помощью Google и просто возиться, но я тоже не смог, я был бы очень признателен за чьи-либо мысли по этому поводу!