Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 如何将图像从一个活动动态传递到另一个活动,并通过JSON在imageview中显示它_Android_Json_Android Imageview - Fatal编程技术网

Android 如何将图像从一个活动动态传递到另一个活动,并通过JSON在imageview中显示它

Android 如何将图像从一个活动动态传递到另一个活动,并通过JSON在imageview中显示它,android,json,android-imageview,Android,Json,Android Imageview,我通过JSON将值从一个活动传递到另一个活动。我能够在下一个活动中接收字符串值。但我不知道该派法师去。同时,它们都是来自数组的动态值 发送方式如下: jsonobj.put(“Location”, “Chennai”); jsonobj.put(“Name”, “test1”); Receving like the following: location = MainActivity.jsonobj.getString(“Location”); name =MainActivity.js

我通过JSON将值从一个活动传递到另一个活动。我能够在下一个活动中接收字符串值。但我不知道该派法师去。同时,它们都是来自数组的动态值

发送方式如下:

jsonobj.put(“Location”, “Chennai”);

jsonobj.put(“Name”, “test1”);

Receving like the following:

location = MainActivity.jsonobj.getString(“Location”);

name =MainActivity.jsonobj.getString(“Name”);

请帮助我如何动态发送图像并在下一个活动中显示它。

您可以将图像的路径作为字符串传递给intent,并在imageview中进行设置

Intent intent = new Intent(getBaseContext(), ActivityB.class);
intent.putExtra("image_url", imageUrl);
startActivity(intent)
在你的第一次活动中

将ImageView转换为位图

 imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
在第二个活动中

  Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

然后将位图设置为imageview。

方法1:

Intent intent = new Intent(getBaseContext(), ActivityB.class);
intent.putExtra("image_url", imageUrl);
startActivity(intent)
在你的第一次活动中

将ImageView转换为位图

 imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
在第二个活动中

  Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
然后在ImageView中显示位图

方法2:

将位图转换为字节数组:-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
将字节数组传递到intent:-

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);
从Bundle中获取字节数组并转换为位图图像:-

Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);

只需将其作为字符串传递,并从下一个活动中获取。您说过您可以这样做,所以我不会解释该部分!如果你有一个url,它是一个字符串,所以根本不用担心。假设您发送的图像名称没有其文件类型,这是一种轻量级的方式

如果要获取可绘制文件夹中图像的ID,请使用获得的字符串

int id1 = getResources().getIdentifier(StringImageNameWithOutPng, "drawable", getPackageName());
如果您希望可绘制

Drawable drawable = ContextCompat.getDrawable(YourCurrantActivity.this, id1);
现在你想怎么用就怎么用

whateverImageView.setImageDrawable(drawable);

更多信息:

在两个活动之间传递数据的简单方法如下

FromActivity.java

Intent i = new Intent(FromActivity.this, ToActivity.class);
i.putExtra("ImageDetails", imgDetails);
startActivity(i);
/* Note: imgDetails can be an object with image details of ImageDetails.java class (or) 
you can set as many properties separately using putExtra multiple times. 
If you are using a class, make it serializable.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    this.imgDetails = (ImageDetails) getIntent().getSerializableExtra("ImageDetails");
    ...
}
ToActivity.java

Intent i = new Intent(FromActivity.this, ToActivity.class);
i.putExtra("ImageDetails", imgDetails);
startActivity(i);
/* Note: imgDetails can be an object with image details of ImageDetails.java class (or) 
you can set as many properties separately using putExtra multiple times. 
If you are using a class, make it serializable.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    this.imgDetails = (ImageDetails) getIntent().getSerializableExtra("ImageDetails");
    ...
}
谢谢
Sriram

只需将图像的名称作为字符串传递。这不是答案,应该放在评论中。我希望这能回答他的问题:-)@Sankar ganesh你能用一个例子解释一下路径吗如果是本地图像-意图=新意图(getBaseContext(),ActivityB.class);intent.putExtra(“image_url”,“/sdcard/Images/test_image.jpg”);startActivity(intent)如果它是来自web的图像,则可能是image@Charuka的url