Android: ошибка, Ljava / lang / IllegalStateException ;: Завершение курсора, t_forms, который не был деактивирован или закрыт - PullRequest
0 голосов
/ 02 января 2011

У меня есть вспомогательный класс БД, который помогает мне вставлять и удалять записи фрагментов информации в Android 1.6.

Когда я удаляю запись и вставляю новую сразу после этого, я получаю следующую ошибку

Ljava / lang / IllegalStateException ;: Завершение курсора android.database.sqlite.SQLiteCursor@43d63338 для t_forms, которые не были деактивированы или закрыты

Я просмотрел в Интернете поиск ответа ибольшинство сообщений на форуме говорят, что курсор не закрыт. На самом деле выполняемые мной операции на самом деле не возвращают данные набора записей, поэтому я немного озадачен, почему logcat выдаст эту ошибку ...

Так что этидве функции вызываются одна за другой ..

//---deletes a particular form---
public boolean deleteForm(int formID) 
{
   return db.delete(DATABASE_TABLE, KEY_FORM_ID + "=" + formID, null) > 0;
}

//---insert a form into the database---
public long insertForm(int form_id, String lform_name, String lform_description, String sdcardPath) 
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_FORM_ID, form_id);
    initialValues.put(KEY_FORM_NAME, lform_name);
    initialValues.put(KEY_FORM_DESC, lform_description);
    initialValues.put(KEY_SDCARDPATH, sdcardPath);
    return db.insert(DATABASE_TABLE, null, initialValues);
}

В чем может быть проблема?

1 Ответ

1 голос
/ 09 августа 2011

Код, который вы указали, недостаточен. Но сначала закройте курсор в onDestroy и onStop следующим образом:

if(mCursor!= null && !mCursor.isClosed())
   mCursor.close();

и затем попробуйте вызвать startManagingCursor(cursor) после того, как вы используете объект курсора, если вы используете его для выполнения запроса и т. Д., Вызовите его после операции, которую вы выполняете с курсором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...