NullPointerException aplicação Mobile

3 respostas Resolvido
mobile
F

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.

3 Respostas

Guiabcti

Bom dia o dá uma debuggada e vê onde está ocorrendo o NullPointer.

F

Obrigado desde já…
O NullPoint, ocorre em: `

clienteRepositorio.inserir(clientes);

Diz que meu clienteRepositorio = null;

Só que continuo se entender, pois ele é uma instância do método inserir que está na classe ClienteRepositorio

instância da classe:
`

private ClienteRepositorio clienteRepositorio;

`

Essa classe, possui um construtor que foi realizado para inicializar e já receber a conexão com o banco:

public ClienteRepositorio(SQLiteDatabase conexao){
    this.conexao = conexao;
}

Eu não entendo o problema, porque a minha instância espera algo, por padrão ele já não tem o construtor vazio também?

F
Solucao aceita

Problema encontrado:

Estive revisando todo o código novamente, percebi que no método criarConexão, eu estava instanciando novamente o ClienteRepositorio, provavelmente ocorreu conflito por um ser com construtor e o outro não.

Quando o sistema chamava a classe, ia com o parâmetro null. Apenas apaguei a nova instância e funcionou :confused:

Criado 10 de junho de 2019
Ultima resposta 10 de jun. de 2019
Respostas 3
Participantes 2