如果第二次从SD卡选择相同的图像,Android应用程序将崩溃
我的应用程序只是从SD卡中获取图像并显示在列表视图中。当我从SD卡中选择图像时,它在列表视图中正确显示,但当我第二次从SD卡中选择相同的图像时,应用程序崩溃。我想要的是,如果第二次选择相同的图像,它应该给出该图像已经存在的消息。谢谢你的帮助如果第二次从SD卡选择相同的图像,Android应用程序将崩溃,android,listview,sd-card,Android,Listview,Sd Card,我的应用程序只是从SD卡中获取图像并显示在列表视图中。当我从SD卡中选择图像时,它在列表视图中正确显示,但当我第二次从SD卡中选择相同的图像时,应用程序崩溃。我想要的是,如果第二次选择相同的图像,它应该给出该图像已经存在的消息。谢谢你的帮助 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, r
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
Bitmap image=(BitmapFactory.decodeFile(picturePath));
addattachmentsToListView(image);
cursor.close();
我想你有一个OutOfMemory例外。从SD卡上读取较大的图像有点困难,但幸运的是,Android开发者网站为您提供了详细的教程,以避免出现这种异常: 本课程通过在内存中加载较小的子采样版本,引导您在不超过每个应用程序内存限制的情况下解码大型位图
First@A.S.可能是正确的,因为所选图像可能太大,无法加载到内存中。关于只加载一次图像的第二个问题是,您应该保存上次加载的项目的url、id或其他内容,以便在加载之前,您可以检查它是否与我已有的相同。如果是这样,不要再这样做。发布您的logcat值这是outOfMemory错误吗?