试图访问一个光标它已被关闭后 [英] Attempted to access a cursor after it has been closed
本文介绍了试图访问一个光标它已被关闭后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我用下面的code删除图像。它的工作原理是第一次,但是当我试图捕捉图像,并删除它
我收到了 StaleDataException
:
08-07 14:57:24.156:E / AndroidRuntime(789):了java.lang.RuntimeException:无法
简历活动{com.example.cap_im / com.example.cap_im.MainActivity}:
android.database.StaleDataException:试图它已被关闭之后访问光标。
公共无效deleteImageFromGallery(字符串captureimageid){
乌里U = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; getContentResolver()。删除(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
BaseColumns._ID +=?,新的String [] {captureimageid}); 的String [] =投影{MediaStore.Images.ImageColumns.SIZE,
MediaStore.Images.ImageColumns.DISPLAY_NAME,
MediaStore.Images.ImageColumns.DATA,BaseColumns._ID,}; Log.i(信息日志,关于activityresult乌里U+ u.toString()); 尝试{
如果(U!= NULL){
光标= managedQuery(U,投影,NULL,NULL,NULL);
}
如果((光标=空)及!及(cursor.moveToLast())){ INT I = getContentResolver()。删除(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
BaseColumns._ID +=+ cursor.getString(3),空);
Log.v(TAG,删除列数:+ I);
}
} {最后
如果(指针!= NULL){
cursor.close();
}
}
}
解决方案
功能,managedQuery()是德precated。
请使用getContentResolver()查询()。
的参数是相同的。
I'm using the following code to delete an image. It works the first time, but when I try to capture an image and delete it
I get a StaleDataException
:
08-07 14:57:24.156: E/AndroidRuntime(789): java.lang.RuntimeException: Unable to
resume activity {com.example.cap_im/com.example.cap_im.MainActivity}:
android.database.StaleDataException: Attempted to access a cursor after it has been closed.
public void deleteImageFromGallery(String captureimageid) {
Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
getContentResolver().delete(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
BaseColumns._ID + "=?", new String[] { captureimageid });
String[] projection = { MediaStore.Images.ImageColumns.SIZE,
MediaStore.Images.ImageColumns.DISPLAY_NAME,
MediaStore.Images.ImageColumns.DATA, BaseColumns._ID, };
Log.i("InfoLog", "on activityresult Uri u " + u.toString());
try {
if (u != null) {
cursor = managedQuery(u, projection, null, null, null);
}
if ((cursor != null) && (cursor.moveToLast())) {
int i = getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
BaseColumns._ID + "=" + cursor.getString(3), null);
Log.v(TAG, "Number of column deleted : " + i);
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
解决方案
Function, managedQuery() is deprecated.
Please use getContentResolver().query().
The parameters is the same.
这篇关于试图访问一个光标它已被关闭后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文