Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Null Pointer Exception ao tentar Editar um Aluno

Olá, estou tentando executar o código mostrado na aula, no entanto ao executar a linha List<Telefone ... obtenho o uma Null Pointer Exception. No entanto na ListaAlunosActivity o numero é mostrado normalmente

   private void preencheCampos() {
        campoNome.setText(aluno.getNome());
        campoEmail.setText(aluno.getEmail());
        List<Telefone> telefones = telefoneDAO
                .buscaTodosOsTelefonesDoAluno(aluno.getId());
        for (Telefone telefone :
                telefones) {
            if (telefone.getTipo() == TipoTelefone.FIXO) {
                campoTelefoneFixo.setText(telefone.getNumero());
            } else {
                campoTelefoneCelular.setText(telefone.getNumero());
            }
        }
    }
 private void finalizaFormulario() {
        preencheAluno();
        if (aluno.temIdValido()) {
            dao.edita(aluno);
        } else {
            int alunoId = dao.salva(aluno).intValue();
            String numeroFixo = campoTelefoneFixo.getText().toString();
            Telefone telefoneFixo = new Telefone(numeroFixo, TipoTelefone.FIXO, alunoId);

            String numeroCelular = campoTelefoneCelular.getText().toString();
            Telefone telefoneCelular = new Telefone(numeroCelular, TipoTelefone.CELULAR, alunoId);

            telefoneDAO.salva(telefoneFixo, telefoneCelular);


        }
        finish();
    }

Esse é o código da Query da interface TelefoneDAO

@Query("SELECT * FROM Telefone " +
            "WHERE alunoId = :alunoId")
    List<Telefone> buscaTodosOsTelefonesDoAluno(int alunoId);

Eu consigo realizar o cadastro, o sistema salva os valores, no entanto ao retornar a List ele me devolve um Null, sendo que na listagem de alunos, ao limitar apenas 1, ele retorna normalmente.

Log do Erro

 rocess: br.com.alura.agenda, PID: 10566
    java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.alura.agenda/br.com.alura.agenda.ui.activity.FormularioAlunoActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.List br.com.alura.agenda.database.dao.TelefoneDAO.buscaTodosOsTelefonesDoAluno(int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3122)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3261)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1977)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6923)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)
     Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.List br.com.alura.agenda.database.dao.TelefoneDAO.buscaTodosOsTelefonesDoAluno(int)' on a null object reference
        at br.com.alura.agenda.ui.activity.FormularioAlunoActivity.preencheCampos(FormularioAlunoActivity.java:80)
        at br.com.alura.agenda.ui.activity.FormularioAlunoActivity.carregaAluno(FormularioAlunoActivity.java:69)
        at br.com.alura.agenda.ui.activity.FormularioAlunoActivity.onCreate(FormularioAlunoActivity.java:43)
        at android.app.Activity.performCreate(Activity.java:7148)
        at android.app.Activity.performCreate(Activity.java:7139)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1293)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3102)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3261) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1977) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6923) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870) 
1 resposta
solução!

Fala Lauro, tudo bem ?

Cara, consegue checar se a instância do seu Dao está sendo criada corretamente ?

Imagino que o problema esteja ai

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