我试图将图像从活动发送到另一个活动,我正在阅读类似的问题,但没有解决我的问题。 我用来发送这张图片的代码是
public void aceptar (View view) {
ImageView iv = (ImageView) findViewById(R.id.foto);
iv.setImageBitmap(BitmapFactory.decodeFile(foto));
File file = new File(foto);
Intent intent = new Intent(this, XMPPClient.class);
ImageView img_view = (ImageView) findViewById(R.id.foto);
img_view.setBackgroundResource(intent.getIntExtra("foto",1));
startActivity(intent);
}
并接收图片
Bundle extras = getIntent().getExtras();
if (extras == null)
{
return;
}
int res = extras.getInt("resourseInt");
ImageView foto = (ImageView) findViewById(R.id.foto);
view.setBackgroundResource(res);
错误就是这个
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3606)
at android.view.View.performClick(View.java:4211)
at android.view.View$PerformClick.run(View.java:17446)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5336)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
答案 0 :(得分:0)
以前曾经问过,但这是可能的。您是否尝试传递图像或ImageView? 两者都是可能的
ImageView:Pass ImageView from one activity to another - Intent - Android
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);
Or using Resources.getIdentifier():
String name = "image_0";
int id = getResources().getIdentifier(name, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
答案 1 :(得分:0)
之前有人问过, Passing image from one activity another activity 有3种解决方案可以解决这个问题。
“1)首先将图像转换为字节数组然后传入Intent,然后在下一个活动中从Bundle获取字节数组并转换为图像(位图)并设置为ImageView。
将位图转换为字节数组: -
位图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(意向);
从Bundle获取字节数组并转换为位图图像: -
Bundle extras = getIntent()。getExtras(); byte [] byteArray = extras.getByteArray(“picture”);位图bmp = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length); ImageView image =(ImageView)findViewById(R.id.imageView1); image.setImageBitmap(BMP);
2)首先将图像保存到SDCard中,然后在下一个活动中将此图像设置为ImageView。
3)将Bitmap传递给Intent并从bundle中获取下一个活动中的位图,但问题是如果你的位图/图像大小很大,那时图像不会在下一个活动中加载。“