Android 在不同的活动中绘制位图

Android 在不同的活动中绘制位图,android,android-activity,android-studio,bitmap,Android,Android Activity,Android Studio,Bitmap,所以我的应用程序应该有目的地捕捉图像,然后在不同的活动中绘制该图像,但它不起作用。这是我的密码: 主要活动: b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE)

所以我的应用程序应该有目的地捕捉图像,然后在不同的活动中绘制该图像,但它不起作用。这是我的密码: 主要活动:

b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "pic.jpg");
            imageUri = Uri.fromFile(photo);
            startActivityForResult(intent, 2);
        }
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 2) {
        Intent k = new Intent(MainActivity.this, FullActivity.class);
        startActivity(k);
    }
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     Uri selectedImage = imageUri;
     iv.setImageBitmap(bp);
}
第二项活动:

b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "pic.jpg");
            imageUri = Uri.fromFile(photo);
            startActivityForResult(intent, 2);
        }
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 2) {
        Intent k = new Intent(MainActivity.this, FullActivity.class);
        startActivity(k);
    }
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     Uri selectedImage = imageUri;
     iv.setImageBitmap(bp);
}

有人能帮我看看问题出在哪里吗。提前感谢。

您需要在
main活动中将
Uri
作为带有
Intent
的字符串传递

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 2) {
        Intent k = new Intent(MainActivity.this, FullActivity.class);
        k.putExtra("uri", imageUri.toString());
        startActivity(k);
    }
}
然后在
FullActivity
中获取字符串并将其解析为
Uri
,然后使用该字符串设置
ImageView

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    String uriString = getIntent().getStringExtra("uri");
    Uri selectedImage = Uri.parse(uriString);
    // you may also need to call imageView.setImageURI(null); here
    // or get the bitmap first to use imageView.setImageBitmap();
    imageView.setImageURI(selectedImage);
}

当您启动的活动退出时调用,为您提供请求代码 开始时使用的代码、返回的结果代码以及任何其他 来自it的数据

启动第二个活动时,您的
onActivityResult
永远不会被调用

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String uri= getIntent().getStringExtra("mUri");
    Uri imageUri= Uri.parse(uri);
    Bitmap bitmap=MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
}
尝试发送
捆绑包中的
Main activity
中收到的
uri

 Uri imageUri = intent.getData();
 Intent intent = new Intent(MainActivity.this, SecondActiviy.class);
 intent.putExtra("mUri", imageUri.toString());
您可以在
SecondActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String uri= getIntent().getStringExtra("mUri");
    Uri imageUri= Uri.parse(uri);
    Bitmap bitmap=MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
}

在第二个活动中,你想做什么?您希望得到什么结果?onActivityResult应在同一活动中使用。您可以在下一个活动中使用Intent将位图或照片作为字符串传递。@ChiragSavsani如何将相机的Intent输出写入字符串?我认为您将Intent extras与活动结果混淆了。方法fileUri=getOutputMediaFileUri(请求\代码\照片);不可访问或未定义,有什么方法可以修复吗?您是否已声明var global?