将ImageView从一个活动传递到另一个活动 - Intent - Android

时间:2014-03-04 14:33:12

标签: android android-intent

我的Android应用程序中的drawable文件夹中有170张图片。我有一个显示所有这些活动的活动。想要做的是将点击的图像视图传递给另一个活动(Zoom_activity),用户可以在其中放大并使用它。我该如何实现?

所有图像均为500x500px。所以我想不到将它们解码为Bitmaps并通过Intent传递Btmaps。请建议一个更好,更简单的方法来做到这一点!我已经看过其他答案了,但没有一个能解决我的问题。

这是我的代码:

Activity_1.java

Intent startzoomactivity = new Intent(Activity_one.this, Zoom_Image.class);
String img_name = name.getText().toString().toLowerCase(); //name is a textview which is in refrence to the imageview.
startzoomactivity.putExtra("getimage", img_name);
startActivity(startzoomactivity);

Zoom_Activity.java

    Intent startzoomactivity = getIntent();
    String img_res = getIntent().getStringExtra("getimage");
    String img_fin = "R.drawable."+img_res;
    img.setImageResource(Integer.parseInt(img_fin));

错误:应用程序关闭

请帮我解决这个问题!
谢谢!

3 个答案:

答案 0 :(得分:1)

Integer.parseInt()仅适用于“1”或“123”之类的字符串,它们实际上只包含整数的字符串表示形式。

您需要的是通过名称找到可绘制资源。

这可以使用反射来完成:

String name = "image_0";
final Field field = R.drawable.getField(name);
int id = field.getInt(null);
Drawable drawable = getResources().getDrawable(id);

或使用Resources.getIdentifier()

String name = "image_0";
int id = getResources().getIdentifier(name, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);

答案 1 :(得分:0)

你在尝试的是错的。您无法将"R.drawable.name"转换为Integer.parseInt。 Integer.parseInt期待"100"之类的东西。你应该使用

getIdentifier(img_fin, "drawable", getPackageName()); 

检索您要查找的资源ID

答案 2 :(得分:0)

使用getResources().getIdentifier从ImageView中的Drawable加载图像:

int img_id = getResources().getIdentifier(img_res, "drawable", getPackageName());
img.setImageResource(img_id);