将图像从一个活动发送到另一个活动

时间:2014-07-14 17:10:24

标签: android

我试图将图像从活动发送到另一个活动,我正在阅读类似的问题,但没有解决我的问题。 我用来发送这张图片的代码是

            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)

2 个答案:

答案 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中获取下一个活动中的位图,但问题是如果你的位图/图像大小很大,那时图像不会在下一个活动中加载。“