我有一個活動來填充列表並從遊標執行一些其他操作。我從一個方法獲取遊標,該方法基於標準的android SQLite查詢將其返回到我的數據庫。該方法在我的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)
問題顯然是當它試圖重新查詢遊標時。如果我在啓動intent之前手動關閉遊標,那麼它工作正常。但後來我需要手動重新查詢它,並不是startManagingCursor()
的整個點?我在活動中有兩個遊標都以相同的方式創建,我調用開始在兩個遊標上管理遊標,都會導致簡歷崩潰。
有什麼我需要做的,讓我的活動正確管理我的遊標? 謝謝。
謝謝,這可能是我最終會做的。我只是認爲這是startManagingCursor的用途......我使用自定義遊標適配器,但我會看看它是如何發展的。 – Matt