Eu olhei todo o meu código várias vezes, não consigo encontrar meu erro. Em vez de editar, cria um novo aluno.
`package alura.com.br.agenda.ui.activity;
import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import alura.com.br.agenda.R; import alura.com.br.agenda.dao.AlunoDAO; import alura.com.br.agenda.model.Aluno;
public class FormularioAlunoActivity extends AppCompatActivity {
private static final String TITULO_APP_BAR = "Novo Aluno";
private TextView campoNome;
private TextView campoTelefone;
private TextView campoEmail;
final AlunoDAO dao =new AlunoDAO();
private Aluno aluno;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario_aluno);
setTitle(TITULO_APP_BAR);
inicializacaoDosCampos();
configuraBotaoSalvar();
Intent dados = getIntent();
if (dados.hasExtra("aluno")){
aluno = (Aluno) dados.getSerializableExtra("aluno");
campoNome.setText(aluno.getNome());
campoEmail.setText(aluno.getEmail());
campoTelefone.setText(aluno.getTelefone());
} else{
aluno = new Aluno();
}
}
private void configuraBotaoSalvar() {
Button botaoSalvar = findViewById(R.id.activity_formulario_de_aluno_botao_salvar);
botaoSalvar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Aluno alunoCriado = criaAluno(); // salva(alunoCriado); preencheAluno(); if(aluno.temIdValido()) { dao.edita(aluno); } else{ dao.salva(aluno); } finish();
}
});
}
private void inicializacaoDosCampos() {
campoNome = findViewById(R.id.activity_formulario_de_aluno_nome);
campoTelefone = findViewById(R.id.activity_formulario_de_aluno_telefone);
campoEmail = findViewById(R.id.activity_formulario_de_aluno_email);
}
private void preencheAluno() {
String nome = campoNome.getText().toString();
String telefone = campoTelefone.getText().toString();
String email = campoEmail.getText().toString();
aluno.setNome(nome);
aluno.setEmail(email);
aluno.setTelefone(telefone);
// Aluno alunoCriado = new Aluno(nome, telefone, email); // return alunoCriado; } }`
package alura.com.br.agenda.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;
public Aluno(){};
public Aluno(String nome, String telefone, String email) {
this.nome = nome;
this.telefone = telefone;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public String getTelefone() {
return telefone;
}
public String getEmail() {
return email;
}
@NonNull
@Override
public String toString() {
return nome;
}
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 boolean temIdValido() {
return id < 0;
}
}
package alura.com.br.agenda.dao;
import java.util.ArrayList;
import java.util.List;
import alura.com.br.agenda.model.Aluno;
public class AlunoDAO {
private final static List<Aluno> alunos = new ArrayList<>();
private static int contadorDeIds = 1;
public void salva(Aluno aluno) {
aluno.setId(contadorDeIds);
alunos.add(aluno);
contadorDeIds++;
}
public void edita(Aluno aluno) {
Aluno alunoEcontrato = null;
for (Aluno a : alunos) {
if (a.getId() == aluno.getId()) {
alunoEcontrato = a;
}
}
if (alunoEcontrato != null){
int posicaoDoAluno = alunos.indexOf(alunoEcontrato);
alunos.set(posicaoDoAluno, aluno);
}
}
public List<Aluno> todos() {
return new ArrayList<>(alunos);
}
}