Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Unfortunately App... has stopped

Ao tentar inserir/salvar os dados de um aluno(usuário), minha aplicação apresenta uma caixa de diálogo com a mensagem "Unfortunately App (...) has stopped". Alguém poderia me ajudar?

package br.com.telesul.coretelesul;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;
import br.com.telesul.coretelesul.dao.UsuarioDAO;
import br.com.telesul.coretelesul.model.Usuario;

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);
    }

    @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:
                Usuario usuario = helper.pegaUsuario();
                Toast.makeText(FormularioActivity.this, "Usuário " + usuario.getNome() + " salvo!", Toast.LENGTH_SHORT).show();
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

}

public class FormularioHelper {

    private final EditText campoNome;
    private final EditText campoEmail;
    private final EditText campoPerfil;

    public FormularioHelper(FormularioActivity activity){

        campoNome   = (EditText) activity.findViewById(R.id.formulario_nome);
        campoEmail  = (EditText) activity.findViewById(R.id.formulario_email);
        campoPerfil = (EditText) activity.findViewById(R.id.formulario_perfil);

    }


    public Usuario pegaUsuario() {

        Usuario usuario = new Usuario();
        usuario.setNome(campoNome.getText().toString());
        usuario.setEmail(campoEmail.getText().toString());
        usuario.setPerfil(campoPerfil.getText().toString());

        return null;

    }

}

public class ListaUsuariosActivity extends AppCompatActivity {

    private ListView listaUsuarios;

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

        UsuarioDAO dao = new UsuarioDAO(this);
        List<Usuario> usuarios = dao.buscaUsuarios();
        dao.close();

        ListView listaUsuarios = (ListView) findViewById(R.id.lista_usuarios);
        ArrayAdapter<Usuario> adapter = new ArrayAdapter<Usuario>(this, android.R.layout.simple_list_item_1, usuarios);
        listaUsuarios.setAdapter(adapter);

        Button novoUsuario = (Button) findViewById(R.id.novo_usuario);
        novoUsuario.setOnClickListener(new View.OnClickListener(){


            @Override
            public void onClick(View view) {
                Intent intentVaiProFormulario = new Intent(ListaUsuariosActivity.this, FormularioActivity.class);
                startActivity(intentVaiProFormulario);

            }
        });
            registerForContextMenu(listaUsuarios);

    }
1 resposta
solução

Olá, tudo bem ?

Acredito que o problema esteja nesse método :

   public Usuario pegaUsuario() {

        Usuario usuario = new Usuario();
        usuario.setNome(campoNome.getText().toString());
        usuario.setEmail(campoEmail.getText().toString());
        usuario.setPerfil(campoPerfil.getText().toString());

        return null;

    }

Dá uma olhadinha no retorno, acredito que você mate rapidinho !

Corrigindo isso já deve funcionar :D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software