想要将第二个活动中的可绘制图像发送到第一个活动,并将该图像设置为仅在第一个活动中的imageview

时间:2016-08-31 07:48:25

标签: android

这里是通过意图传递和获取图像的代码,

secondActivity

                Intent intent = new Intent(this, PostVideoTagLocation.class);
                Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.index);
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] byteArray = stream.toByteArray();
                Intent intent2 = new Intent();
                intent2.putExtra("picture", byteArray);
                startActivityForResult(intent,1);
                setResult(RESULT_OK, intent2);

firstActivity

          if (requestCode == 1) {
            if(resultCode == RESULT_OK){
                Bundle extras = getIntent().getExtras();
                byte[] byteArray = extras.getByteArray("picture");
                Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
                ImageView image = (ImageView) findViewById(R.id.add_photo);
                image.setImageBitmap(bmp);
              }
           }

2 个答案:

答案 0 :(得分:0)

在PostVideoTagLocation的onCreate方法中,你可以简单地从创建活动已经过的字节数组创建一个位图。

getIntent()方法导致用于创建此活动的intent,其中包含一个包含图片bytearray的包。

但是我不能完全确定在Intent传递的Bundle中存储可能很大的图像有多安全,所以我会谨慎使用它。

你可以使用Intents getByteArrayExtra()和参数" picture"当您设置额外内容时使用,然后只需使用BitmapFactorys decodeByteArray将其解码为位图。

您的代码看起来可能像这样

onCreate(Bundle bundle)..
   byte[] rawBitmap = getIntent().getByteArrayExtra("picture");
   Bitmap bitmap = BitmapFactory.decodeByteArray(rawBitmap)

并根据需要使用位图。

然而,我自己会将图像保存到临时文件中并故意传递,只是为了安全。

答案 1 :(得分:0)

第一个 Activiy上,您应该像这样呼叫第二个 Activiy

Intent intent = new Intent(PostVideoTagLocation.this, SecondActivity.class);
            startActivityForResult(intent, 1111);

然后在第二个 Activity上,当您想要将图片发送到第一个 Activiy时,您应该致电:

                Intent intent = new Intent();
                Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.index);

                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] byteArray = stream.toByteArray();

                intent.putExtra("picture", byteArray);

                setResult(RESULT_OK, intent);
                finish();

最后在第一个 Activity中将此代码写在onActivityResult上:

if(requestCode == 1111){
         Bundle extras = data.getExtras();
         byte[] byteArray = extras.getByteArray("picture");
         Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
         mImageView.setImageBitmap(bmp);
    }

它应该工作(我测试过)。希望它能帮到你!

[编辑] 您可以将位图保存到文件中,只需将文件路径放到Intent

即可