如何将位图或Drawable从一个活动传递给另一个活动?

问题描述:

我想从一个活动传递位图或绘制对象到另一个,现在我这样做:如何将位图或Drawable从一个活动传递给另一个活动?

  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,任何想法?

感谢

+0

一种可能性是将其保存到SD卡或什么的,然后传递文件的路径的意图。但我也希望有人对如何避免这个问题有一个想法。 – Izkata 2012-08-10 20:44:30

+0

从LogCat中发布堆栈跟踪,以便关闭您的强制。 – kcoppock 2012-08-10 20:44:47

+1

另请阅读:http://code.google.com/p/android/issues/detail?id = 5878 – kcoppock 2012-08-10 20:46:36

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

我与静态属性之前给

相同的链接:

public static Bitmap getBitmap(){ 
    return bitmap; 
} 

我不会去到光盘(文件,数据库等),如果你只需要这个数据是暂时的。我会为你采取同样的做法。

你有几个选择。只要采取适合您应用程序的更好的方法。

  • 公共静态类,可用于您的代码。这种佣工时很方便,像管理共享偏好,或者您可能需要在那里

  • Singleton,这种模式非常类似于以前的一个全球性的一些东西的信息。主要区别在于,在这种情况下,您只有一个类的实例(在静态中没有实例,只能访问变量和方法)。无论何时您需要任何参考实例来处理应用的整个生命周期,此模式都很有用。

  • 扩展应用程序。这比其他两个更进一步。您的整个生命周期中都有可用的应用程序实例。通常情况下,你可能要管理存在一些其他的东西,比如推,或错误通知,服务等Example