カーソルにListActivity
バインドされた があり、 内のアイテムListView
が選択されたときにEditItem
アクティビティが起動されstartActivityForResult
、このEditItem
アクティビティはいくつかのクエリを実行し、それぞれが独自の個別のカーソルに配置されます。これらは、Access DB のルックアップ フィールドのように、スピナーを設定するために使用されます。
私の問題は、ユーザーがEditItem
送信、キャンセル、または戻るボタンのいずれかを介してこのアクティビティを終了すると、アクティビティに戻り、 (同じ項目またはListView
別の項目) で別のエントリを選択すると、クラス (私のものではなく Android ) でエラーが発生することです。 )。結果を呼び出すと呼び出し元のアクティビティが破壊されることがあるため、両方のアクティビティ のメソッドでカーソルを閉じています。ListView
IllegalStateException
SQLiteCursor
onDestroy
これはアイテムの 2 回目の選択で常に発生するわけではなく、3 回目の選択で発生する場合があります。OSよりも速く動いているだけかもしれないと思ったので、アクションの間に最大30秒の一時停止を開始しました。エラーは、結果のアクティビティを2回または3回呼び出した後にのみスローされます。一時停止してもこれは修正されません。
編集:エラーはSQLiteCursor finalize
呼び出し時のメソッドにありますsuper.finalize();
編集 #2:スレッドのスタック トレース:
Daemon System Thread [<5> HeapWorker] (Suspended (exception IllegalStateException))
SQLiteCursor.finalize() line: 603
NativeStart.run() line: not available [native method]
#3 LogCat からのスタック トレースを編集します (partslist はテーブル名です)。
INFO/dalvikvm(599): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@437541a0 on partslist that has not been deactivated or closed
INFO/dalvikvm(599): at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
INFO/dalvikvm(599): at dalvik.system.NativeStart.run(Native Method)