【问题标题】:How can I transfer bitmap image into another activity?如何将位图图像传输到另一个活动?
【发布时间】:2019-03-03 02:39:27
【问题描述】:

为什么我的代码不起作用?我想将图像从一项活动转移到另一项活动。请帮忙!注意:我已经创建了一个相机功能,这就是我获取图像的地方。

这是 MainActivity.java

public class MainActivity extends AppCompatActivity {

public static final int CAMERA_REQUEST = 9999;

ImageView imageView1;
Button camera,send;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView1 = findViewById(R.id.imageView1);
    camera = findViewById(R.id.camera);
    send = findViewById(R.id.send);

    camera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent d1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(d1, CAMERA_REQUEST);
        }
    });

    send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            imageView1.buildDrawingCache();
            Bitmap bitmap = imageView1.getDrawingCache();

            Intent intent = new Intent(MainActivity.this, ResultActivity.class);  
            intent.putExtra("bp", bitmap);

        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Bitmap bitmap = (Bitmap) data.getExtras().get("data");
    imageView1.setImageBitmap(bitmap);
}
}

这是ResultActivity.java

public class ResultActivity extends AppCompatActivity {

ImageView imageView2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_result);

    imageView2 = findViewById(R.id.imageView2);

    Intent intent = new Intent();
    Bitmap bitmap = intent.getParcelableExtra("bp");
    imageView2.setImageBitmap(bitmap);
    }
}  

如果我做错了什么。请告诉我。谢谢

【问题讨论】:

标签: java android parsing bitmap uri


【解决方案1】:

您已经在“OnActivityResult”中收到的意图中以 Uri 形式接收位图。 您所要做的就是使用此意图移动到第二个活动。 然后从那里您可以将其转换为位图:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Intent intent = new Intent(MainActivity.this, ResultActivity.class);  
    intent.putExtra("Some key",data.getData().toString());
    Bitmap bitmap = (Bitmap) data.getExtras().get("data");
    imageView1.setImageBitmap(bitmap);
}
}

在 ResultActivity 上:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_result);
    Uri uri = Uri.parse(getIntent.getExtra.getString("Some key"));
    imageView2 = findViewById(R.id.imageView2);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);

    imageView2.setImageBitmap(bitmap);
    }
}

【讨论】:

  • 您好先生,请问,“上下文”是从哪里来的?
  • 实际上,如果您在活动中,则不需要参考上下文。我已经编辑了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多