2011-01-02 8 views
0

私はAndroid 1.6で情報のレコードを挿入および削除するのに役立つDBヘルパークラスを用意しています。Android:エラー、Ljava/lang/IllegalStateException;:カーソルを終了する、非アクティブ化またはクローズされていないt_forms

私はレコードを削除し、その直後に新しいものを挿入すると、私は次のエラー

Ljava/LANG/IllegalStateExceptionが取得;:ファイナライズカーソル[email protected]はしていないt_formsに非アクティブ化またはクローズされました

私は答えを探していますが、ほとんどのフォーラムの記事ではカーソルが閉じていないと言われています。実際に実行している操作はレコードセットデータを返さないため、なぜなら、logcatがこのエラーを投げる理由を少しぼんやりしていたからです...

これらは2つの機能です

//---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); 
} 

何が問題になる可能性がありますか?

+0

あなたが提供したコードは、正確にエラーが発生した場所を示すには不十分です。 –

答えて

1

ご指定のコードでは不十分です。しかし、最初にこのようonDestroyとonStopにカーソルをクローズ:

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

、その後など、クエリを作ってそれを使用する場合は、あなたのカーソルオブジェクトを使用します。ここで、後startManagingCursor(cursor)を呼び出してみてください、あなたが作る操作の後にそれを呼び出しますカーソルで。

関連する問題