0

我有两节课。我想将图像路径数组从活动传递到另一个活动。我该怎么做。这些图像存储在 SD 卡中。我能够以输入流的形式检索单个图像并将其转换为字节数组并通过意图传递给另一个活动。但是我怎样才能为图像数组做到这一点。

请参阅我用于从输入流转换为字节数组的代码。

  istr = getExpansionFile().getInputStream("data/image1.png");
  Bitmap bitmap = BitmapFactory.decodeStream(istr);
  ByteArrayOutputStream stream = new ByteArrayOutputStream();
  bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
  byte[] byteArray = stream.toByteArray();
  intent.putExtra("image",byteArray);
  startActivity(intent);
4

3 回答 3

2

我必须在我的应用程序Pic4Share中做同样的事情,我以这种方式解决了它:

从第一个活动开始:

String sPath[] = new String[MAX_PICS]; // This is the array that has the paths stored 

Intent myIntent = new Intent(Activity1.this, Activity2.class);
Bundle b = new Bundle();
for(int i=0; i<sPath.length; i++){
    b.putString("sPath" + Integer.toString(i), sPath[i]);
}
b.putInt("iLength", sPath.length);
myIntent.putExtras(b);
startActivity(myIntent);

从第二个活动中,您可以在 onCreate 中以这种方式取回路径:

String sPath[] = new String[MAX_PICS]; // This is the array where the paths are being stored

Bundle b = getIntent().getExtras();
iLength = b.getInt("iLength");
for(int i=0; i<iLength; i++){
    sPath[i] = b.getString("sPath" + Integer.toString(i));
}

现在您又拥有了路径,那么您就可以解码位图了!

于 2013-07-05T22:12:09.943 回答
1

一般来说,这只是一个坏主意,在活动之间传递图像很容易在内存不足的设备上崩溃并且也是不必要的,为什么不直接传递图像的路径并让新活动也加载它们呢?或者将图像保存到媒体存储并传递对新活动的引用

于 2013-07-05T21:13:30.503 回答
0

从第一个活动中缓存您的图像并从其他活动中重复使用它们。

于 2013-07-05T21:16:10.247 回答