如何将图像路径数组从活动传递到另一个活动

时间:2013-07-05 21:10:40

标签: android image android-activity

我有两节课。我想将一系列图像路径从活动传递到另一个活动。我怎么能这样做。这些图像存储在SD卡中。 我能够以inputstream的形式检索单个图像并将其转换为bytearray并通过intent传递给另一个活动。但是我怎么能为图像阵列做到这一点。

请参阅我用于从inputstream转换为bytearray的代码。

  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);

3 个答案:

答案 0 :(得分: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));
}

现在您再次拥有路径,然后您可以解码位图!

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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