0

我的应用程序所做的是它只是从 sdcard 中获取图像并显示在 listview 中。当我从 sdcard 中选择图像时,它会在 listview 中正确显示,但是当我第二次从 sdcard 中选择相同的图像时,应用程序崩溃。我想要的是,如果第二次选择相同的图像,它应该给吐司该图像已经存在。感谢您的帮助

 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();
4

2 回答 2

1

首先@AS 可能是正确的,因为所选图像可能太大而无法加载到内存中。您询问的关于仅加载一次图像的第二件事是,您应该保存最后加载项目的 url、id 或其他内容,以便在加载之前您可以检查它是否与我已经拥有的相同。如果是这样,不要再这样做了。

于 2013-10-08T08:23:34.327 回答
0

我认为您遇到了 OutOfMemory 异常。从 SD 卡读取更大的图像有点困难,但幸运的是 Android 开发者网站为您提供了详细的教程来避免这种异常:LINK

本课通过在内存中加载较小的二次采样版本,引导您在不超过每个应用程序内存限制的情况下解码大型位图。

直到上课

于 2013-10-08T06:32:27.253 回答