[RESOLVIDO] Erro ao acessar classe DAO e banco de dados

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

}

Não tinha inicializado o BancoController e por isso não estava acessando, inicializei e deu certo.