我通过onActivityResult()
从图库中获取用户选择的图片,如下所示:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == OPEN_MEDIA_PICKER) {
// Make sure the request was successful
if (resultCode == RESULT_OK && data != null) {
ArrayList<String> selectionResult = data.getStringArrayListExtra("result");
System.out.println(selectionResult);
}
}
}
当我尝试将selectionResult
打印到控制台时,它会将每个图像的目录作为字符串打印到控制台。
如何将实际图像存储在数组中并通过意图将它们发送到下一个活动?
答案 0 :(得分:2)
您只需创建Bitmap数组然后使用URI生成Bitmap并放入Array然后将Array传递给Adapter。
ArrayList<Bitmap> bitmaps =new ArrayList<>();
然后
Uri uri = data.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
bitmaps .add(bitmap );
然后通知适配器。
答案 1 :(得分:1)
兄弟,将图像的位图数据从一个活动发送到另一个活动是不好的方法,因为位图对象大多数都很大。因此outOfMemory问题可能会生成,并且您的应用程序将因此outOfMemory而崩溃。所以你应该使用图像控制器而不是位图数据。我的意思是您将图像路径(图像目录)从一个活动发送到其他活动。您通过意图从一个活动向另一个活动发送图像路径的ArrayList对象。因为它是可序列化的,并且字符串格式数据不大。
答案 2 :(得分:1)
您可以在arraylist中添加文件路径,如:
arraylist.add(file.getAbsolutePath());
adapter.notifyDataSetChanged();
然后在新的Activity中发送arraylist并在新的活动中获取图像表单文件,如:
FileInputStream streamIn = null;
try {
streamIn = new FileInputStream(new File(arraylist.get(position)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(streamIn); //This gets the image
custom_imageView.setImageBitmap(bitmap);