我如何将Bitmap或Drawable从一个Activity传递到另一个Activity?

时间:2012-08-10 20:42:48

标签: android android-intent bitmap

我想将Bitmap或Drawable从一个Activity传递到另一个Activity,现在我正在这样做:

            EventPhoto photo = (EventPhoto) parent.getItemAtPosition(position);

            BitmapDrawable test = (BitmapDrawable) photo.getDrawable();
            Bitmap bitmap = test.getBitmap();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 0, baos); 
            byte[] b = baos.toByteArray();

            Intent intent = new Intent(EventDetailActivity.this, ImageExpandActivity.class);
            System.out.println(b.length); //B LENGTH = 908k
            intent.putExtra("image",b);
            startActivity(intent);

我的问题是当我尝试使用putExtra时,他不发送任何异常,没有,但是没有响应和Android杀死应用程序,为什么会发生这种情况? 我正在考虑它的尺寸,因为当我传递一个小图像时,一切都有效。

我正在寻找并找到这样的解决方案:How to pass bitmap from one activity to another 但我想使用putExtra,任何想法?

由于

2 个答案:

答案 0 :(得分:0)

如果您暂时只需要这些数据,我不会去光盘(文件,数据库等)。我会采取同样的方法。

你有几种选择。只需更好地适应您的应用程序。

  • 公共静态类,可在您的代码中使用。这种帮助程序可以方便地管理共享首选项或您可能需要的全局信息等内容

  • Singleton,这种模式与前一种模式非常相似。主要区别在于,在这种情况下,您只有一个类的实例(在静态中没有实例,只需访问变量和方法)。只要您的应用程序的整个生命周期需要任何参考实例,此模式就会很有用。

  • 扩展应用程序。这比其他两个更进了一步。您可以在整个生命周期中使用您的应用程序实例。通常,您可能希望管理其他一些内容,例如推送或错误通知,服务等。Example

答案 1 :(得分:0)

好吧,我找不到任何不同的解决方案,所以我用这个解决了: How to pass bitmap from one activity to another

我之前使用静态属性给出的相同链接:

public static Bitmap getBitmap(){
   return bitmap;
}