私はリストに値を設定し、カーソルから他のものを実行するアクティビティを持っています。私はデータベースに標準のアンドロイド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)
この問題は明らかにカーソルを再クエリしようとしているときに発生しています。インテントを起動する前にカーソルを手動で閉じると、正常に動作します。しかし、私はそれを手動で再クエリする必要がありますし、startManagingCursor()
全体のポイントですか?同じ方法で作成されたアクティビティには2つのカーソルがあり、両方でカーソルを管理し始めると、両方とも再開時にクラッシュが発生します。
カーソルを正しく管理するためのアクティビティを得るために何か必要なことはありますか?おかげさまで
ありがとうございました。私はちょうどそれがstartManagementCursorのためのものだと思った...私はカスタムカーソルアダプタを使用していますが、どのように動くかを見ていきます。 – Matt