Estou tentando renderizar o passáro e não aparece nada na tela, passando no debugger eu reparei que o retorno de holder.getSurface() é sempre null, de forma que nunca é chamado o método de desenhar o passáro na tela, não ocorre nenhum erro nos logs, já tentei alterar a ordem e o escopos das variáveis e nada.
Também tentei adicionar um callback para o holder, conforme eu vi em alguns sites, também nada feito. Não sei se eu esqueci de adicionar alguma linha de inicialização... segue a classe Game do meu projeto
package br.com.alura.jumper.engine;
import android.content.Context;
import android.graphics.Canvas;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import br.com.alura.jumper.elementos.Passaro;
public class Game extends SurfaceView implements Runnable {
private boolean isRunning = true;
private SurfaceHolder holder = getHolder();
private Passaro passaro;
public Game(Context context) {
super(context);
IniciaElementos();
}
private void IniciaElementos(){
passaro = new Passaro(100);
}
@Override
public void run() {
while(isRunning){
if(!this.holder.getSurface().isValid()) continue;
Canvas canvas = holder.lockCanvas();
passaro.DesenhaNo(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
public void inicia() {
isRunning = true;
}
public void pausa() {
isRunning = false;
}
}
O problema está nessa linha, que sempre retorna true e entra no "continue"
if(!this.holder.getSurface().isValid()) continue;