Android: ошибка, Ljava/lang/IllegalStateException;: Завершение курсора, t_forms, которые не были деактивированы или закрыты

У меня есть вспомогательный класс БД, который помогает мне вставлять и удалять записи фрагментов информации в 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);
}

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


person Rupin    schedule 02.01.2011    source источник
comment
Предоставленного вами кода недостаточно, чтобы сказать, где именно возникает ошибка.   -  person Vit Khudenko    schedule 02.01.2011


Ответы (1)


Предоставленного вами кода недостаточно. Но сначала закройте курсор в onDestroy и onStop вот так:

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

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

person rogcg    schedule 09.08.2011