【问题标题】:How to send image from one activity to another in kitkat android?如何在kitkat android中将图像从一个活动发送到另一个活动?
【发布时间】:2014-11-18 11:49:44
【问题描述】:

在第一个活动中:

Intent i = new Intent(FirstActivity.this, SecondActivity.class);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
i.putExtra("image", bytes);
startActivity(i);

在第二个活动中:

byte[] byteArray = extras.getByteArray("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

if (bmp != null) {         
    iv_1.setImageBitmap(bmp);
}

这适用于所有设备和版本。但它不适用于 Kitkat,为什么? 如何解决 kitkat 中的问题?

【问题讨论】:

  • 为什么不能临时保存图片并发送这个设置的路径??
  • 我想要捕获的图像和另一个图像(两个图像)一次传递到下一个活动。我该如何传递。
  • Yoy 可以将两张图片保存在某个外部文件夹中并传递名称。如果数字是特定的,你可以像 temp_1,temp_2 一样 fex 图像名称

标签: java android image send android-4.4-kitkat


【解决方案1】:

通过意图传递如此庞大的文件并不是一个好习惯。这会减慢启动新活动的过程。

尝试对图像进行静态引用并在下一个活动中使用它。一旦你完成了,就让它null

【讨论】:

    【解决方案2】:

    使用 Map<String, Bitmap> 创建一个单例类,它将保留您需要的所有图像,并通过意图仅发送它们的键名。

    【讨论】:

      【解决方案3】:

      将位图从一个活动传递到另一个活动对性能不利。

      只需尝试将位图保存在内存中并将位图的“路径”发送到另一个活动,然后在另一个活动中使用BitmapFactory.decodeFile(pathName);方法从路径中获取位图。

      【讨论】:

        【解决方案4】:

        在您的第一个活动中将图像视图转换为位图

        imageView.buildDrawingCache();
        Bitmap bitmap = imageView.getDrawingCache();
        
        Intent intent = new Intent(this, NewActivity.class);
        intent.putExtra("BitmapImage", bitmap);
        

        在第二个活动中

        Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
        

        它也在 kitkat 上工作。

        【讨论】:

        • 我想要捕获的图像和另一个图像一次传递到下一个活动。我该如何通过。
        • 您也可以将捕获的图像原样传递给下一个活动。
        • 如果我喜欢上面的代码,它会显示 FAILED BINDER TRANSACTION。如果我喜欢我的问题,它会直接在 kitkat 中关闭。我该如何解决这个问题
        猜你喜欢
        • 2016-11-04
        • 2012-07-20
        • 1970-01-01
        • 2016-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        相关资源
        最近更新 更多