Bom noite,
Quando clico em um item da lista, ele passa para a activity do formulario com os dados corretamente, faço a alteração e salvo. Quando retorna para a lista ele adiciona ao invés de alterar. Coloquei um breakpoint na classe FormularioActivity, e método aluno.getId() sempre retorna null.
insira seu código aqui
public class FormularioActivity extends AppCompatActivity {
private FormularioHelper helper;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_formulario);
helper = new FormularioHelper(this);
Intent intent = getIntent(); Aluno aluno = (Aluno) intent.getSerializableExtra("aluno"); if(aluno != null){ helper.preencheFormulario(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.getAluno();
AlunoDAO dao = new AlunoDAO(this); if (aluno.getId() != null){ dao.altera(aluno); } else{ dao.insere(aluno); } dao.close();
finish(); break; }
return super.onOptionsItemSelected(item); } }
/* Created by Renato on 04/01/2017. */
public class FormularioHelper {
private final EditText campoNome; private final EditText campoEndereco; private final EditText campoTelefone; private final EditText campoSite; private final RatingBar campoNota;
private Aluno aluno;
public FormularioHelper(FormularioActivity activity){ this.aluno = new Aluno(); campoNome = (EditText) activity.findViewById(R.id.formulario_nome); campoEndereco = (EditText) activity.findViewById(R.id.formulario_endereco); campoTelefone = (EditText) activity.findViewById(R.id.formulario_telefone); campoSite = (EditText) activity.findViewById(R.id.formulario_site); campoNota = (RatingBar) activity.findViewById(R.id.formulario_nota); }
public Aluno getAluno() { Aluno aluno = new Aluno(); aluno.setNome(campoNome.getText().toString()); aluno.setEndereco(campoEndereco.getText().toString()); aluno.setTelefone(campoTelefone.getText().toString()); aluno.setSite(campoSite.getText().toString()); aluno.setNota(Double.valueOf(campoNota.getProgress()));
return aluno; }
public void preencheFormulario(Aluno aluno) {
this.aluno = aluno; campoNome.setText(aluno.getNome()); campoEndereco.setText(aluno.getEndereco()); campoTelefone.setText(aluno.getTelefone()); campoSite.setText(aluno.getSite()); campoNota.setProgress(aluno.getNota().intValue()); } }