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)