Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Depois q adicionei o método de editar, ele não está salvando um novo aluno, o app dá um erro e n funciona - Android I Aula 5

package com.example.rafin.primeiro_app;

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.EditText;
import android.widget.Toast;

import com.example.rafin.primeiro_app.dao.AlunoDao;
import com.example.rafin.primeiro_app.modelo.Aluno;

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.pegaAluno();

                AlunoDao dao = new AlunoDao(this);

                if (aluno != 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);
    }
}
2 respostas
solução!

Olá, tudo bem ?

O aluno sempre será diferente de null nessa verificação:

 if (aluno != null){
                    dao.altera(aluno);
                }
                else{
                    dao.insere(aluno);
                }

O que você precisa validar é se o id dele existe ou não, para fazer isso chame o método getId() do aluno:

 if (aluno.getId() != null){

Realmente esqueci desse detalhe. Agora ta certinho !!

Obrigado pela ajuda !