Estou estudando desenvolvimento Mobile, e me deparei com o seguinte problema:
Ao clicar no botão “ok” que é para inserir dados no SQLite, está parando o aplicativo e retornando o seguinte erro:
java.lang.NullPointerException: Attempt to invoke virtual method ‘void com.example.myapplication1.dominio.repositorio.ClienteRepositorio.inserir(com.example.myapplication1.dominio.entidades.Clientes)’ on a null object reference at com.example.myapplication1.ActCadCliente.confirmar(ActCadCliente.java:124) at com.example.myapplication1.ActCadCliente.onOptionsItemSelected(ActCadCliente.java:100)
Já revisei, e não consigo entender que objeto null ele fala…
A minha estrutura é a seguinte:
Classe Cliente:
public class Clientes { public int codigo; public String nome; public String endereco; public String email; public String telefone; }
Método Inserir:
public void inserir(Clientes clientes){ ContentValues contentValues = new ContentValues(); contentValues.put("NOME", clientes.nome); contentValues.put("ENDERECO", clientes.endereco); contentValues.put("EMAIL", clientes.email); contentValues.put("TELEFONE", clientes.telefone); conexao.insertOrThrow("CLIENTE", null, contentValues); }
Método Confirmar:
private void confirmar(){
clientes = new Clientes(); if(validaCampos() == false){ try{ clienteRepositorio.inserir(clientes); finish(); }catch (SQLException ex){ AlertDialog.Builder dlg = new AlertDialog.Builder(this); dlg.setTitle(getString(R.string.error)); dlg.setMessage(ex.getMessage()); dlg.setNeutralButton(getString(R.string.text_button_ok), null); dlg.show(); } }}
Eu já desconfiei que talvez fosse o caso do campo código na classe Cliente, pois ele é retornado vazio, pois na verdade a atribuição dele é diretamente dentro do Banco de dados… Porém já realizei testes de remover ele, ou atribuir um valor fixo para teste… O erro permanece o mesmo.
Agradeço a ajuda.
