3
respostas

Não estou conseguindo editar os alunos. Toda vez que eu clico para editar, ele cadastra um novo aluno.

package br.com.alura.agenda;

import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast;

import br.com.alura.agenda.dao.AlunoDAO; import br.com.alura.agenda.modelo.Aluno;

public class FormularioActivity extends AppCompatActivity {

private FormularioHelper helper;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_formulario);

/ Instânciando a class Helper e referenciando ela mesma com o parâmetro 'this' / helper = new FormularioHelper(this);

Intent intent = getIntent(); Aluno aluno = (Aluno) intent.getSerializableExtra("aluno"); if (aluno != null) { helper.preencherFormulario(aluno); } }

@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_formulario, menu);

return super.onCreateOptionsMenu(menu); }

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_formulario_ok: Aluno aluno = helper.pegaAluno(); AlunoDAO dao = new AlunoDAO(this); if (aluno.getId() != null){ dao.altera(aluno); } else { dao.insere(aluno); } dao.close();

Toast.makeText(FormularioActivity.this, "Aluno " + aluno.getNome() + " salvo!", Toast.LENGTH_SHORT).show();

finish();

break; }

return super.onOptionsItemSelected(item); } }

insira seu código aqui
3 respostas

Olá Vinicius,

Uma dúvida, como você declarou o atributo id na classe Aluno, você colocou Long? Pela descrição me parece que o id de um aluno existente está sempre dando algo diferente de nulo e por isso ele cai na segunda condição, a de inserir um novo aluno.

Espero que essa informação ajude!

Abs

E ae Rafael, beleza?

Então cara, o id está como Long sim. Da uma olhada na classe Aluno aqui:

package br.com.alura.agenda.modelo;

import java.io.Serializable;

/* Created by ViníciusA on 13/11/2016. */ public class Aluno implements Serializable {

private Long id; private String nome; private String sobrenome; private String sexo; private String endereco; private String site; private Double nota;

public Long getId() { return id; }

public void setId(Long id) { this.id = id; }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

public String getSobrenome() { return sobrenome; }

public void setSobrenome(String sobrenome) { this.sobrenome = sobrenome; }

public String getSexo() { return sexo; }

public void setSexo(String sexo) { this.sexo = sexo; }

public String getEndereco() { return endereco; }

public void setEndereco(String endereco) { this.endereco = endereco; }

public String getSite() { return site; }

public void setSite(String site) { this.site = site; }

public Double getNota() { return nota; }

public void setNota(Double nota) { this.nota = nota; }

@Override public String toString() { return getId() + " - " + getNome(); } }

Oi Vinícius, tudo bem?

Me parece que está tudo ok na classe Aluno. Você conseguiria compartilhar o projeto no github para que eu possa dar uma olhada?

Abs