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

时间:2017-01-04 11:59:47

标签: android json android-imageview

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

发送如下:

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

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

Receving like the following:

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

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

请帮我详细说明如何动态发送图像并在下一个活动中显示。

5 个答案:

答案 0 :(得分:1)

您可以将意图中的图像路径作为字符串传递,并将其设置在imageview中。

Intent intent = new Intent(getBaseContext(), ActivityB.class);
intent.putExtra("image_url", imageUrl);
startActivity(intent)

答案 1 :(得分:0)

在您的第一个活动中

将ImageView转换为位图

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

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

在第二个活动中

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

然后将位图设置为imageview。

答案 2 :(得分:0)

方法1:

在您的第一个活动中

将ImageView转换为位图

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

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

在第二个活动中

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

答案 3 :(得分:0)

只需将其作为字符串传递并从下一个活动中取出。你说你可以这样做,所以我不解释那个部分!如果你有一个网址,那么它就是一个字符串,所以根本不需要担心。假设您发送的图像名称的文件类型不是轻量级的。

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

int id1 = getResources().getIdentifier(StringImageNameWithOutPng, "drawable", getPackageName());

如果您想要 drawable

Drawable drawable = ContextCompat.getDrawable(YourCurrantActivity.this, id1);

现在可以随意使用

whateverImageView.setImageDrawable(drawable);

更多:https://stackoverflow.com/a/11519855/5188159

答案 4 :(得分:0)

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

<强> 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.
*/

<强> ToActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    this.imgDetails = (ImageDetails) getIntent().getSerializableExtra("ImageDetails");
    ...
}

由于 斯利拉姆