0

我想将 Bitmap 或 Drawable 从一个 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 杀死应用程序,为什么会发生这种情况?我正在考虑它的大小,因为当我传递一个小图像时一切正常。

我正在寻找并找到一些这样的解决方案:如何将位图从一个活动传递到另一个活动, 但我想使用 putExtra,有什么想法吗?

谢谢

4

2 回答 2

0

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

你有几个选择。只需选择更适合您的应用程序的内容即可。

  • 公共静态类,在您的代码中始终可用。这种助手可以方便地管理诸如共享偏好或您可能需要在那里的一些全局信息之类的事情

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

  • 扩展应用。这比其他两个更进一步。您有一个在整个生命周期中可用的应用程序实例。通常你可能想在那里管理一些其他的东西,比如推送、错误通知、服务等。示例

于 2012-08-10T21:31:08.967 回答
0

好吧,我找不到任何不同的解决方案,所以我解决了这个问题: 如何将位图从一个活动传递到另一个活动

我之前给出的带有静态属性的相同链接:

public static Bitmap getBitmap(){
   return bitmap;
}
于 2012-08-15T12:43:12.423 回答