3
respostas

Fatal Exception

Pessoal estou tentando fazer o jogo do flappy bird no android studio, porém o codigo simplmente apresenta o seguinte erro: E/AndroidRuntime: FATAL EXCEPTION: Thread-21084 Process: br.com.alurajumper.br.jumper, PID: 21123 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1281) at android.graphics.Canvas.drawBitmap(Canvas.java:1337) at br.com.alurajumper.br.jumper.engine.Game.run(Game.java:36) at java.lang.Thread.run(Thread.java:818)

3 respostas

Olá Lucas,

Pela descrição do erro, imagino que ele esteja tentando acessar ou fazer alguma operação em um objeto do tipo Bitmap, e esse objeto não foi instanciado.

Poderia postar o código da sua classe Game pra gente dar uma olhada?

import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.view.SurfaceHolder; import android.view.SurfaceView;

import br.com.alurajumper.br.graficos.Tela; import br.com.alurajumper.br.jumper.R;

/* Created by Lucas on 12/12/2017. */

public class Game extends SurfaceView implements Runnable{

private final Tela tela; private boolean isRunning = true; private Passaro passaro; private final SurfaceHolder holder = getHolder(); public Game(Context context) { super(context); tela = new Tela(context); } private Bitmap background;

@Override public void run() { while(isRunning){ if(!holder.getSurface().isValid()) continue; Canvas canvas = holder.lockCanvas(); //Desenho dos componentes do jogo canvas.drawBitmap(background,0,0,null); passaro.desenhaNo(canvas); passaro.cai(); holder.unlockCanvasAndPost(canvas);

} } public void pause(){ this.isRunning = false; } public void inicia() { this.isRunning = true; }

public void incializaElementos(){ this.passaro = new Passaro(); Bitmap back = BitmapFactory.decodeResource(getResources(), R.drawable.background); background = Bitmap.createScaledBitmap(back,back.getWidth(),tela.getAltura(),false); } }

Lucas,

A invocação do método inicializaElementos() não deveria ser feita dentro do construtor dessa classe Game? Você fez a invocação dele em outro ponto do código?

Caso tenha feito em outro ponto do código, conseguiria compartilhar o projeto todo pra dar uma olhada?

Abraços

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software