Quando crio o construtor de Aluno para receber dados da criação de um novo registro (Aula 4 - 4:47), perco a referência do construtor que recebe nome, telefone e email. No segundo bloco de código há um comentário "//Esse construtor perde a referência"
package alura.com.br.ui.activity;
import static alura.com.br.ui.activity.ConstantesActivities.CHAVE_ALUNO;
import static alura.com.br.ui.activity.ConstantesActivities.TITULO_APPBAR_EDITA_ALUNO;
import static alura.com.br.ui.activity.ConstantesActivities.TITULO_APPBAR_NOVO_ALUNO;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.Serializable;
import alura.com.br.R;
import alura.com.br.dao.AlunoDAO;
import alura.com.br.ui.activity.model.Aluno;
public class FormularioAlunoActivity extends AppCompatActivity {
private EditText campoNome;
private EditText campoTelefone;
private EditText campoEmail;
final AlunoDAO dao = new AlunoDAO();
private Aluno aluno;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario_aluno);
inicializacaoDosCampos();
configuraBotaoSalvar();
carregaAluno();
}
private void carregaAluno() {
Intent dados = getIntent();
if (dados.hasExtra("aluno")) {
aluno = (Aluno) dados.getSerializableExtra(CHAVE_ALUNO);
preencheCampos();
} else{
aluno = new Aluno();
}
}
private void preencheCampos() {
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) {
setTitle(TITULO_APPBAR_EDITA_ALUNO);
finalizaFormulario();
}
});
}
private void finalizaFormulario() {
preencheAluno();
if(aluno.temIdValido()){
dao.edita(aluno);
} else {
setTitle(TITULO_APPBAR_NOVO_ALUNO);
dao.salva(aluno);
}
finish();
}
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 alunoCriado) {
dao.salva(alunoCriado);
startActivity(new Intent(FormularioAlunoActivity.this,
ListaAlunosActivity.class));
finish();
}
private void preencheAluno() {
String nome = campoNome.getText().toString();
String telefone = campoTelefone.getText().toString();
String email = campoEmail.getText().toString();
aluno.setNome(nome);
aluno.setTelefone(telefone);
aluno.setEmail(email);
}
}
package alura.com.br.ui.activity.model;
import androidx.annotation.NonNull;
import java.io.Serializable;
public class Aluno implements Serializable {
private int id = 0;
private String nome;
private String telefone;
private String email;
//Esse construtor perde a referência
public Aluno(String nome, String telefone, String email) {
this.nome = nome;
this.telefone = telefone;
this.email = email;
}
public Aluno() {
}
public void setNome(String nome) {
this.nome = nome;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public void setEmail(String email) {
this.email = email;
}
public String getNome() {
return nome;
}
public String getTelefone() {
return telefone;
}
public String getEmail() {
return email;
}
@NonNull
@Override
public String toString() {
return nome;
}
public void setID(int id) {
this.id = id;
}
public int getID() {
return id;
}
public boolean temIdValido() {
return id > 0;
}
}