Boa noite, estou com um problema, para fins de estudo estou criando um aplicativo que cadastra dados de cães, ele “puxa” os dados de um arquivo xml e os armazena em uma classe DAO que vai ser passada a classe que controla a questão do banco de dados.
Esta dando esse erro
07-09 21:45:49.292 3259-3259/langergluss.langerflussdogcare E/AndroidRuntime: FATAL EXCEPTION: main
Process: langergluss.langerflussdogcare, PID: 3259
java.lang.NullPointerException: Attempt to invoke virtual method ‘void langergluss.langerflussdogcare.bancodados.BancoController.inserir(langergluss.langerflussdogcare.controller.DAO)’ on a null object reference
at langergluss.langerflussdogcare.Cadastrar$1.onClick(Cadastrar.java:47)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
A classe cadastrar
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;import langergluss.langerflussdogcare.bancodados.BancoController;
import langergluss.langerflussdogcare.controller.DAO;public class Cadastrar extends AppCompatActivity {
private EditText nomeCao,nascimentoCao,primeiraVacina,intervaloVacina, primeiroVermifugo,intervaloVermifugo; private Button botaoSalvar; private DAO dao; private BancoController bancoController; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cadastrar); } @Override protected void onResume() { super.onResume(); nomeCao = (EditText) findViewById(R.id.nomeCao); nascimentoCao = (EditText) findViewById(R.id.nascimento); primeiraVacina = (EditText) findViewById(R.id.primeiraVacina); intervaloVacina = (EditText) findViewById(R.id.intervaloVacina); primeiroVermifugo = (EditText) findViewById(R.id.primeiroVermifugo); intervaloVermifugo = (EditText) findViewById(R.id.intervaloVermifugo); botaoSalvar = (Button) findViewById(R.id.botaoSalvar); botaoSalvar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dao= new DAO(); dao.setNomeCao(nomeCao.getText().toString()); dao.setPrimeiraVacina(primeiraVacina.getText().toString()); dao.setIntervaloVacina(Integer.parseInt(intervaloVacina.getText().toString())); dao.setPrimeiroVermifugo(primeiroVermifugo.getText().toString()); dao.setIntervaloVermifugo(Integer.parseInt(intervaloVermifugo.getText().toString())); bancoController.inserir(dao); } }); }
}
A classe que controla o banco de dados
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;import langergluss.langerflussdogcare.controller.DAO;
public class BancoController {
private SQLiteDatabase db;
private CriaBanco banco;public BancoController(Context baseContext) { //cria banco banco = new CriaBanco(baseContext); } public Boolean isDados() { Boolean isDados = true; db = banco.getReadableDatabase(); Cursor cursor; cursor = db.rawQuery("SELECT COUNT (*) FROM " + banco.TABELA, null); if (cursor != null){ cursor.moveToFirst(); if(cursor.getInt(0)== 0){ isDados= false; } } db.close(); return isDados; } public void inserir(DAO dao) { ContentValues valores; long resultado; db = banco.getWritableDatabase(); valores = new ContentValues(); valores.put(banco.NOME_CAO,dao.getNomeCao()); valores.put(banco.ANIVERSARIO_CAO,dao.getNascimentoCao()); valores.put(banco.PRIMEIRA_VACINA, dao.getPrimeiraVacina()); valores.put(banco.INTERVALO_VACINA, dao.getIntervaloVacina()); valores.put(banco.PRIMEIRA_VERMIFUGO, dao.getPrimeiroVermifugo()); valores.put(banco.INTERVALO_VERMIFUGO, dao.getIntervaloVermifugo()); resultado = db.insert(banco.TABELA,null, valores); db.close(); if (resultado == 1) { Log.d("Aplicativo","Erro ao insetir registro"); } else { Log.d("Aplicativo","Sucesso ao inserir"); } }
}
e finalmente a classe DAO
public class DAO {
private String nomeCao; private String nascimentoCao; private String primeiraVacina; private Integer intervaloVacina; private String primeiroVermifugo; private Integer intervaloVermifugo; public String getNomeCao() { return nomeCao; } public void setNomeCao(String nomeCao) { this.nomeCao = nomeCao; } public String getNascimentoCao() { return nascimentoCao; } public void setNascimentoCao(String nascimentoCao) { this.nascimentoCao = nascimentoCao; } public String getPrimeiraVacina() { return primeiraVacina; } public void setPrimeiraVacina(String primeiraVacina) { this.primeiraVacina = primeiraVacina; } public Integer getIntervaloVacina() { return intervaloVacina; } public void setIntervaloVacina(Integer intervaloVacina) { this.intervaloVacina = intervaloVacina; } public String getPrimeiroVermifugo() { return primeiroVermifugo; } public void setPrimeiroVermifugo(String primeiroVermifugo) { this.primeiroVermifugo = primeiroVermifugo; } public Integer getIntervaloVermifugo() { return intervaloVermifugo; } public void setIntervaloVermifugo(Integer intervaloVermifugo) { this.intervaloVermifugo = intervaloVermifugo; }
}