Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Ajuda no erro de null object

Olá, há um tempo postei aqui pedindo ajuda sobre um select em um listview, após isso consegui fazer todos os outros sem problema, mas este em especial não quer dar certo... o erro é este:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: br.com.hlnengenharia.app, PID: 14293
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.hlnengenharia.app/br.com.hlnengenharia.app.listas.ListaInspecaoActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Long br.com.hlnengenharia.app.model.Inspecao.getId()' on a null object reference
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2572)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654)
                      at android.app.ActivityThread.-wrap11(ActivityThread.java)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
                      at android.os.Handler.dispatchMessage(Handler.java:111)
                      at android.os.Looper.loop(Looper.java:207)
                      at android.app.ActivityThread.main(ActivityThread.java:5728)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
                   Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Long br.com.hlnengenharia.app.model.Inspecao.getId()' on a null object reference
                      at br.com.hlnengenharia.app.listas.ListaInspecaoActivity.carregaLista(ListaInspecaoActivity.java:68)
                      at br.com.hlnengenharia.app.listas.ListaInspecaoActivity.onCreate(ListaInspecaoActivity.java:39)
                      at android.app.Activity.performCreate(Activity.java:6301)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) 
                      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                      at android.os.Handler.dispatchMessage(Handler.java:111) 
                      at android.os.Looper.loop(Looper.java:207) 
                      at android.app.ActivityThread.main(ActivityThread.java:5728) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

E o código é este:

 String setorSQL = "CREATE TABLE Setores(setor_id INTEGER PRIMARY KEY AUTOINCREMENT, setor_nome TEXT NOT NULL, " +
                "setor_atividade TEXT, idUnidade TEXT NOT NULL, FOREIGN KEY (idUnidade) REFERENCES Unidades (unidade_id));";

        String inspecaoSQL = "CREATE TABLE Inspecoes (inspecao_id INTEGER PRIMARY KEY AUTOINCREMENT, inspecao_nome TEXT NOT NULL," +
                "idSetor TEXT NOT NULL, FOREIGN KEY (idSetor) REFERENCES Setores (setor_id));";
    private void carregaLista() {
        InspecaoDAO dao = new InspecaoDAO(this);

        Long id = inspecao.getId();

        List<Inspecao> inspecoes = dao.buscaInspecao(id);
        dao.close();

        ArrayAdapter<Inspecao> adapter = new ArrayAdapter<Inspecao>(this, android.R.layout.simple_list_item_1, inspecoes);
        listaInspecao = findViewById(R.id.lista_inspecao);
        listaInspecao.setAdapter(adapter);
    }
    public List<Inspecao> buscaInspecao(Long id) {
        List<Inspecao> i = new ArrayList<>();
        Cursor c = dao.getReadableDatabase().rawQuery("SELECT * FROM Inspecoes JOIN Setores ON idSetor=setor_id WHERE idSetor=?",new String[]{id.toString()});
        while (c.moveToNext())
            i.add(criaSetor(c));
        c.close();
        return i;
    }
4 respostas

Rafaela, tudo bem ?

Provavelmente seu objeto inspecao tá nulo, onde você pegou a instância dele?

Bom dia, Matheus... então, eu instanciei "Inspecao" no inicio da classe ListaInspecaoActivity...

"private Inspecao inspecao"

e depois puxei "Long idInsp = inspecao.getId();"

só que não entendo porque ele está dando nulo.

solução!

Você não passou nenhuma referencia, ou seja, em momento algum falou quem é essa inspecao, por esse motivo esta dando problema, a inspecao está nula

Como assim? Como eu passaria essa informação? Já que nas outras telas, fiz da mesma forma e ele puxou normalmente? Como eu aponto a inspeção?