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

Sistema trava ao clicar no FAB indicando tentativa de acesso a referência nula.

Prezado professor estava tudo correndo bem até que ao final da aula 06 após fazer o getIntent() no FormularioAlunoActivity. O aplicativo carrega corretamente os campos do aluno selecionado no ListaAlunosActivity após seleção na lista, mas ao clicar no FloatingActionButton para nova interseção o sistema trava. No FormularioAluno o sistema da a seguinte mensagem de tentativa de acesso a uma referência nula. Trava logo no primeiro campo. Aluno.getNome()' on a null object reference at com.estudo.agenda.FormularioAlunoActivity.onCreate(FormularioAlunoActivity.java:35) Meu código está igual ao seu exemplo, os EditText foram inicializados. Não consegui encontrar nada. Obrigado.

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);
        inicializacaoDosCampos();
        cofiguraBotaoSalvar();

        Intent dados = getIntent();
        Aluno aluno = (Aluno)dados.getSerializableExtra("aluno");
        campoNome.setText(aluno.getNome());
        campoTelefone.setText(aluno.getTelefone());
        campoEmail.setText(aluno.getEmail());
    }

    private void cofiguraBotaoSalvar() {
        Button btSalvar = findViewById(R.id.bt_salvar_formulario_aluno);
        btSalvar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Aluno alunoCriado = criaAluno();
                salva(alunoCriado);
            }
        });
    }

    private void inicializacaoDosCampos() {
        campoNome = findViewById(R.id.edT_nome_formulario_aluno);
        campoTelefone = findViewById(R.id.edT_telefone_formulario_aluno);
        campoEmail = findViewById(R.id.edT_email_formulario_aluno);
    }

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

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

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

Wladimir, boa tarde!

Isso de fato era pra ocorrer, pois agora tela do formulário está sempre esperando um novo aluno, o que nem sempre é o caso. No capitulo 2 o instrutor irá mostrar como corrigir esse problema.

Atividade onde ele corrige https://cursos.alura.com.br/course/android-avancando-listeners-menu-ui/task/48465

Espero ter ajudado e bons estudos!

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