java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase:

2 respostas Resolvido
java
Lavaprato

Tenho várias classes DAO em um metodo desalvarCliente(), uma salva dados do cliente, outra o endereco, outro telefone e outro email, meu problema está ocorrendo quando tento salvar o email que é o ultimo a ser gravado em um banco de dados.
Ele informa que estou tentando reabrir um objeto que está fechado… sendo que não a nada faltando instanciar ou inicializar.

Segue o log do erro:

06-23 17:12:06.921 31779-31779/br.com.mcn E/ViewRootImpl: sendUserActionEvent() mView == null

06-23 17:12:19.101 31779-31779/br.com.mcn E/AndroidRuntime: FATAL EXCEPTION: main

java.lang.IllegalStateException: Could not execute method for android:onClick

at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)

at android.view.View.performClick(View.java:4452)

at android.widget.Button.performClick(Button.java:148)

at android.view.View$PerformClick.run(View.java:18428)

at android.os.Handler.handleCallback(Handler.java:725)

at android.os.Handler.dispatchMessage(Handler.java:92)

at android.os.Looper.loop(Looper.java:176)

at android.app.ActivityThread.main(ActivityThread.java:5365)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)

at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.reflect.InvocationTargetException

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)

at android.view.View.performClick(View.java:4452)

at android.widget.Button.performClick(Button.java:148)

at android.view.View$PerformClick.run(View.java:18428)

at android.os.Handler.handleCallback(Handler.java:725)

at android.os.Handler.dispatchMessage(Handler.java:92)

at android.os.Looper.loop(Looper.java:176)

at android.app.ActivityThread.main(ActivityThread.java:5365)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)

at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/br.com.mcn/databases/McnDados.db

at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)

at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1543)

at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1445)

at br.com.mcn.dao.EmailDAO.insertEmail(EmailDAO.java:141)

at br.com.mcn.dao.ClienteDAO.gravarCliente(ClienteDAO.java:296)

at br.com.mcn.telas.cliente.ClienteCadActivity.gravarClienteCad(ClienteCadActivity.java:111)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)

at android.view.View.performClick(View.java:4452)

at android.widget.Button.performClick(Button.java:148)

at android.view.View$PerformClick.run(View.java:18428)

at android.os.Handler.handleCallback(Handler.java:725)

at android.os.Handler.dispatchMessage(Handler.java:92)

at android.os.Looper.loop(Looper.java:176)

at android.app.ActivityThread.main(ActivityThread.java:5365)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)

at dalvik.system.NativeStart.main(Native Method)

2 Respostas

me1

Lavaprato,

Bem estranho,

Posta o código do metodo salvarCliente().

Lavaprato
Solucao aceita

Bom dia, resolvi, por algum motivo, não sei qual, ele mostrava que a conexão estava fechada, removi todos os SqliteDatabase.close(); dos métodos, dai funcionou, o que eu estava fazendo era:
Abria conexão, salvava cliente, fechava conexão.
Abria conexão, salvava endereço, fechava conexão, e assim até acabar os dados, acho que no final estava sobrecarregando de tanto fechar e abrir dai ele não abria mais.

Criado 23 de junho de 2016
Ultima resposta 24 de jun. de 2016
Respostas 2
Participantes 2