如果第二次从SD卡选择相同的图像,Android应用程序将崩溃

如果第二次从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

我的应用程序只是从SD卡中获取图像并显示在列表视图中。当我从SD卡中选择图像时,它在列表视图中正确显示,但当我第二次从SD卡中选择相同的图像时,应用程序崩溃。我想要的是,如果第二次选择相同的图像,它应该给出该图像已经存在的消息。谢谢你的帮助

 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错误吗?