【问题标题】:Moving the picture captured to the next activity将捕获的图片移动到下一个活动
【发布时间】:2015-04-18 04:43:36
【问题描述】:

我正在尝试将用户捕获的图片放入第二个活动中。每次我捕获图片时都会将我带到下一个活动,但现在面临的问题是如何将捕获的图像放入下一个活动中以便用户可以看到它

请任何人指导或指导我应该如何做?

这是我的代码

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAM_REQUEST) {

       if (resultCode == RESULT_OK) {

           Bitmap thumbnail = (Bitmap) data.getExtras().get("data");

            Intent i = new Intent(this, PostActivity.class);
            i.putExtra("name", thumbnail);
            startActivity(i);
        }
    }
}

【问题讨论】:

    标签: android android-intent android-activity android-imageview android-image


    【解决方案1】:

    您可以使用以下代码通过 Intent 发送数据

            Intent intent=new Intent(CurrentActivity.this,SecondActivity.class);
            intent.putExtra("imagepath",path);
            startActivity(intent);
    

    在 SecondActivity 中接收通过 Intent 发送的数据的代码

            Bundle b=getIntent().getExtras();
            String path=b.getString("imagepath");
    

    【讨论】:

      【解决方案2】:

      将图像路径添加到 Intent Extras 并在第二个活动中获取它。

      【讨论】:

        【解决方案3】:

        在活动之间使用 Intent Extras 发送图像 URI。

         Intent i = new Intent(this, SecondActivity.class);
                                i.putExtra("uri",uri);
                                startActivity(i);
        

        【讨论】:

          【解决方案4】:

          当您在 onActivityResult 方法上收到 Bitmap 时。因此您可以尝试使用以下代码将图像传递给NextActivity。

          1) 将Bitmap 转换为字节数组

          Bitmap mBitmap = (Bitmap) data.getExtras().get("data");
          ByteArrayOutputStream stream = new ByteArrayOutputStream();
          mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
          byte[] byteArray = stream.toByteArray();
          
          // Pass it to intent to send in NextActitivy
          Intent intent = new Intent(this, NextActivity.class);
          intent.putExtra("captured_image", byteArray);
          startActivity(intent);
          

          2) 在NextActivity onCreate() 方法上从包中获取字节

          Bundle mBundle = getIntent().getExtras();
          byte[] mBytes = mBundle.getByteArray("captured_image");
          
          Bitmap mBitmap = BitmapFactory.decodeByteArray(mBytes, 0, mBytes.length);
          ImageView mImageView = (ImageView) findViewById(R.id.imageView1);
          
          mImageView.setImageBitmap(mBitmap);
          

          【讨论】:

          • 在这一行intent.putExtra("captured_image", byteArray); --- 我可以用任何我想要的名字代替“captured_image”吗?
          • @MazinAlmaskari 您可以使用任何名称,但是当您从 onActivityResult 方法发送并在 NextActivity 上获取它时,它必须相同。 :)
          • 谢谢..我仍然面临这个问题..你能在帖子中检查我的代码并指出我做错了什么吗..这段代码在我的 mainActivity 中
          • 我应该在我的 secondActivity 中写什么
          • 关于你写的第二步..我应该在 onCreate() 方法上做对吗? :) 抱歉问太多了
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-11
          • 1970-01-01
          • 2018-02-04
          • 1970-01-01
          相关资源
          最近更新 更多