【问题标题】:pass list view image from one activity to next activity in android将列表视图图像从一个活动传递到android中的下一个活动
【发布时间】:2012-11-15 20:51:13
【问题描述】:

我开发了一个 Android 应用程序。

应用正在使用 xml 解析执行显示的列表视图。

我使用了下面的代码。文本数据成功地从一个活动传递到下一个活动,但图像没有从一个活动传递到另一个活动。

如何将图像从一个活动传递到 Android 应用程序中的下一个活动?

这是第一个活动:

String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
String duration = ((TextView) view.findViewById(R.id.duration)).getText().toString();
String artist = ((TextView) view.findViewById(R.id.artist)).getText().toString();
String image = ((ImageView) view.findViewById(R.id.list_image)).getImageMatrix().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_TITLE, title);
in.putExtra(KEY_DURATION, duration);
in.putExtra(KEY_ARTIST, artist);
in.putExtra(KEY_THUMB_URL, image);
startActivity(in);

这是下一个活动:

Intent in = getIntent();

// Get XML values from previous intent
String title = in.getStringExtra(KEY_TITLE);
String duration = in.getStringExtra(KEY_DURATION);
String artist = in.getStringExtra(KEY_ARTIST);
Bitmap bitmap =(Bitmap) in.getParcelableExtra(KEY_THUMB_URL);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblCost = (TextView) findViewById(R.id.cost_label);
TextView lblDesc = (TextView) findViewById(R.id.description_label);
ImageView image = (ImageView)findViewById(R.id.image_label);
image.setImageBitmap(bitmap); 
lblName.setText(title);
lblCost.setText(duration);
lblDesc.setText(artist);

编辑:

我已经改变了第一个活动,如下代码:

String image = ((ImageView) view.findViewById(R.id.list_image)).getImageMatrix().toString();
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_THUMB_URL, image);

我已经改变了第二个活动,如下所示:

static final String KEY_THUMB_URL = "Image";
String Image = in.getStringExtra(KEY_THUMB_URL);
ImageLoader imageLoader = new ImageLoader(getApplicationContext());
ImageView thumb = (ImageView) findViewById(R.id.image_label);
imageLoader.DisplayImage(Image, thumb);

在我必须运行应用程序之后意味着我只得到空图像。

【问题讨论】:

  • 如何为列表视图准备图像?如果您的列表视图中的所有数据已经​​在设备上排序,也许您可​​以将位置传递给您的活动然后采取行动。
  • 你可以看到这个帖子stackoverflow.com/questions/6463243/…在Activity之间传递图像
  • @user1855914 请看我的回答可能会解决你的问题。

标签: android image android-intent xml-parsing android-listview


【解决方案1】:

要在活动之间传递图像,首先将图像转换为位图,然后使用THIS 将该位图传递给下一个活动。

【讨论】:

  • 嗨,我已经尝试过本教程。它对我没有帮助。请阅读我的更新问题并为此提供解决方案。
  • 当你从第一个活动中传递图像时检查图像是否有值??
  • @user1855914:为什么你试图传递整个图像而不是图像的 URI?
  • 我在第一次活动中选择了特定产品,这意味着我必须仅显示该特定图像。但我只获得了 no_image.png 图像。
【解决方案2】:

位图不能直接通过intent传递,而是必须将位图转换为字节数组,然后通过intent传输字节数组,并在调用的活动中将字节数组转换为位图。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),"Image ID");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 

然后传递图像

            intent.putExtra("imagepass", bytes.toByteArray());
             startActivity(intent);

然后在调用的活动上

    Bundle extras = getIntent().getExtras();
    byte[] byteArray = extras.getByteArray("imagepass");
    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

    ImageView iv=(ImageView) findViewById(R.id.imgvw2);
    iv.setImageBitmap(bmp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    相关资源
    最近更新 更多