0
データベースアダプタで次のルーチンを使用しています。呼び出されるたびに、「アプリケーションがカーソルを閉じなかった」というエラーが作成されます。アンドロイドカーソルが閉じていないエラー
私は呼び出しルーチンでそれを開いていないので、どのようにカーソルを閉じることができません。これは、リスト内のディスプレイアダプタ内で使用されます。
public int dbio_rcount(String p_query)
{
int v_ret = 0 ;
Cursor mCursor = null ;
try
{
mCursor = mDb.rawQuery(p_query, null);
}catch (SQLException e) {}
if ( (mCursor != null)
&& (mCursor.moveToFirst()))
{
v_ret = mCursor.getInt(0);
}
mCursor.close();
return v_ret ;
}
moveToFirst()は例外をスローしないように見えます。また、私はrawQueryを使用していません。あなたはこれを試してみるとよいでしょう。これはクローズされていないカーソルですか? –
例外についてはあなたが正しいと思いますが、 'moveToFirst'ではなく' rawQuery'で起こっています。スローされる例外をスローする 'rawQuery'の周りにtry/catchがあります。あなたの修正はどちらかの方法で動作するはずです。しかし、私は 'mCursor.close()'の前にヌルチェックを追加します。 'rawQuery'が' mCursor'を投げている場合、あなたの 'finally'ブロックではnullになります。 – goto10
良い点、nullのチェックが追加されました –