Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将映像路径数组从活动传递到另一个活动_Android_Image_Android Activity - Fatal编程技术网

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

Android 如何将映像路径数组从活动传递到另一个活动,android,image,android-activity,Android,Image,Android Activity,我有两节课。我想将映像路径数组从活动传递到另一个活动。我该怎么做?这些图像存储在SD卡中。 我能够以inputstream的形式检索单个图像,并将其转换为bytearray,然后通过intent传递给另一个活动。但我如何才能为图像阵列做到这一点 请参阅我用于将inputstream转换为bytearray的代码 istr = getExpansionFile().getInputStream("data/image1.png"); Bitmap bitmap = BitmapFactor

我有两节课。我想将映像路径数组从活动传递到另一个活动。我该怎么做?这些图像存储在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);

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

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

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

我必须在我的应用程序中执行同样的操作,并通过以下方式解决此问题:

从第一个活动开始:

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);
String sPath[]=新字符串[MAX_PICS];//这是存储了路径的数组
Intent myIntent=新的Intent(Activity1.this,Activity2.class);
Bundle b=新Bundle();

对于(int i=0;i我必须在我的应用程序中执行相同的操作,并以以下方式解决:

从第一个活动开始:

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);
String sPath[]=new String[MAX_PICS];//这是存储路径的数组
Intent myIntent=新的Intent(Activity1.this,Activity2.class);
Bundle b=新Bundle();

对于(int i=0;iSingleton类似乎是解决方案:图像路径与实际图像字节非常不同。如果是前者,则只需填充字符串列表并使用
putStringArrayListExtra()传递它们会做的。如果是后者,那么你应该考虑在下一个活动中重新加载它们。从内存的角度来看,传递一个潜在的大量字节根本不是一个可行的选择。SuntLon类似乎是解决方案:图像路径与实际的图像字节有很大的不同。如果是前者,那么SI。MPLY填充字符串列表并使用<代码> PtStupRayRayListEub()/代码>传递它们。如果是后者,则应该考虑在下一个活动中重新加载它们。从内存的角度来看,传递大量的字节可能不是一个可行的选择。