gpt4 book ai didi

android - 将图像从一个 Activity 传递到另一个 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:24 33 4
gpt4 key购买 nike

SO 上有类似的问题,但没有一个对我有用。

我想在 Activity1 中获取点击的图像并在 Activity2 中显示它。
我正在像这样获取点击图像的图像 ID:

((ImageView) v).getId()

并通过 Intent 将其传递给另一个 Activity 。

在第二个 Activity 中,我使用如下图像 ID:

imageView.setImageResource(imgId);

我在两个 Activity 中都记录了值 og image id,它是相同的。

但是我遇到了以下异常:

android.content.res.Resources$NotFoundException: Resource is not a Drawable 
(color or path): TypedValue{t=0x12/d=0x0 a=2 r=0x7f050000}

我猜这里的问题是 getId() 返回的是 ImageView 的 ID 而不是 它的源图像
所有这些图像都存在于 drawable 中。

感谢任何帮助。

最佳答案

有 3 种解决方案可以解决此问题。

1) 首先将图像转换为字节数组,然后传递给 Intent,在下一个 Activity 中,从 Bundle 中获取字节数组并转换为图像(位图)并设置到 ImageView 中。

将位图转换为字节数组:-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

将字节数组传递给 Intent :-

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);

从 Bundle 中获取字节数组并转换为位图图像:-

Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);

2) 首先将图像保存到 SDCard 中,然后在下一个 Activity 中将此图像设置到 ImageView 中。

3) 将 Bitmap 传递到 Intent 并在下一个 Activity 中从 bundle 中获取位图,但问题是如果您的 Bitmap/Image 尺寸当时很大,则图像不会在下一个 Activity 中加载。

关于android - 将图像从一个 Activity 传递到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519691/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com