У меня есть действие, которое заполняет список и выполняет другие действия из курсора. Я получаю курсор от метода, который возвращает его на основе стандартного запроса SQLite для Android в мою базу данных. Метод определен в моем классе SQLHelper
. Метод открывает базу данных, запрашивает, закрывает базу данных и возвращает курсор. После того, как курсор был собран в упражнении, я звоню startManagingCursor(cursor);
Все это прекрасно работает.
Проблема возникает, когда я запускаю вспомогательное действие, а затем возвращаюсь к первому. Я получаю силу близко со следующим выводом:
07-28 18:11:04.674: ERROR/AndroidRuntime(224): java.lang.RuntimeException: Unable to resume activity {blabla}: java.lang.IllegalStateException: mQuery SELECT * FROM vehicles WHERE _id=? 1
...
07-28 18:11:04.674: ERROR/AndroidRuntime(224): Caused by: java.lang.IllegalStateException: mQuery SELECT * FROM vehicles WHERE _id=? 1
07-28 18:11:04.674: ERROR/AndroidRuntime(224): at android.database.sqlite.SQLiteQuery.requery(SQLiteQuery.java:162)
07-28 18:11:04.674: ERROR/AndroidRuntime(224): at android.database.sqlite.SQLiteCursor.requery(SQLiteCursor.java:536)
...
07-28 18:11:04.674: ERROR/AndroidRuntime(224): Caused by: android.database.sqlite.SQLiteMisuseException: library routine called out of sequence: handle 0x0
07-28 18:11:04.674: ERROR/AndroidRuntime(224): at android.database.sqlite.SQLiteProgram.native_bind_string(Native Method)
07-28 18:11:04.674: ERROR/AndroidRuntime(224): at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:178)
07-28 18:11:04.674: ERROR/AndroidRuntime(224): at android.database.sqlite.SQLiteQuery.requery(SQLiteQuery.java:153)
Проблема, очевидно, в том, что он пытается повторно запросить курсор. Если я закрываю курсор вручную перед тем, как запустить намерение, то он работает нормально. Но тогда мне нужно повторно запросить его вручную, и не в этом ли смысл startManagingCursor()
? У меня есть два курсора в действии, которые созданы одинаково, и я вызываю указатель начала управления на обоих, оба вызывают сбой при возобновлении.
Есть ли что-то еще, что мне нужно сделать, чтобы моя активность правильно управляла курсорами?
Спасибо.