Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Quando clico no botão o app simplesmente fecha.

Aparece esse erro no terminal.

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.projeto.agendaalura.model.Aluno.getNome()' on a null object reference at com.projeto.agendaalura.ui.acitivity.FormularioAlunoActivity.onCreate(FormularioAlunoActivity.java:35) at android.app.Activity.performCreate(Activity.java:8000) at android.app.Activity.performCreate(Activity.java:7984)

4 respostas

Fala Bruno tudo bem ?

Cara consegue mostrar seu código inteiro pra gente da classe FormularioAlunoActiviity?

Posso sim !

package com.projeto.agendaalura.ui.acitivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.projeto.agendaalura.R;
import com.projeto.agendaalura.dao.AlunoDAO;
import com.projeto.agendaalura.model.Aluno;

public class FormularioAlunoActivity extends AppCompatActivity {

    public static final String TITULO_APPBAR = "Novo Aluno";
    private EditText campoNome;
    private EditText campoTelefone;
    private EditText campoEmail;
    private final AlunoDAO dao = new AlunoDAO();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario_aluno);
        setTitle(TITULO_APPBAR);//Barra de titulo.
        inicializacaoDosCampos();
        configuraBotaoSalvar();

        Intent dados = getIntent();//Esse getIntent recbi os dados
        Aluno aluno = (Aluno) dados.getSerializableExtra("aluno");//Aqui se faz o castin
        //dos dados recebidos. transformanduos em obj.
        campoNome.setText(aluno.getNome());
        campoTelefone.setText(aluno.getTelefone());
        campoEmail.setText(aluno.getEmail());
    }

    private void configuraBotaoSalvar() {
        Button botaoSalvar = findViewById(R.id.activity_formulario_aluno_botao_salvar);
        botaoSalvar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Aluno alunoCriado = criaAluno();
                salva(alunoCriado);
            }
        });
    }

    private void inicializacaoDosCampos() {
        campoNome = findViewById(R.id.activity_formulario_aluno_nome);
        campoTelefone = findViewById(R.id.activity_formulario_aluno_telefone);
        campoEmail = findViewById(R.id.activity_formulario_aluno_email);
    }

    private void salva(Aluno aluno) {
        dao.salva(aluno);
        finish();
    }

    @NonNull
    private Aluno criaAluno() {
        String nome = campoNome.getText().toString();
        String telefone = campoTelefone.getText().toString();
        String email = campoEmail.getText().toString();

        return new Aluno(nome, telefone, email);
    }
}
solução!

Bruno,

Cara o erro tá no onCreate:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario_aluno);
        setTitle(TITULO_APPBAR);//Barra de titulo.
        inicializacaoDosCampos();
        configuraBotaoSalvar();

        Intent dados = getIntent();//Esse getIntent recbi os dados
        Aluno aluno = (Aluno) dados.getSerializableExtra("aluno");//Aqui se faz o castin
        //dos dados recebidos. transformanduos em obj.
        campoNome.setText(aluno.getNome());
        campoTelefone.setText(aluno.getTelefone());
        campoEmail.setText(aluno.getEmail());
    }

Quando você tá tentando atribuir o valor do Aluno da edição, nesse momento você precisa fazer uma validação para ter certeza que tem aluno, no caso de uma nova inserção, o aluno não vem, logo sua referencia é nula, por isso que está levando nullpointer

Obrigado Matheus !

Tinha que ter um aluno criaco la mesmo. Eu pensava que podia criar esse aluno no emulador.

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