来自相机的图片未显示在第二个活动中

时间:2017-10-20 04:37:25

标签: android android-activity camera imageview

我很难过来向人们寻求帮助,但我一直坚持这个问题,这让我很生气。

我试图从MainActivity中取一个按钮,它会将您带入相机并拍照。然后它会带您进入下一个活动,其中预览了相同的图像。但每当我到达下一个活动时,图像都不会显示,只是一个占位符。我究竟做错了什么?我在代码中遗漏了什么吗?

我一直在环顾四周并尝试使用Uri,但显然它不再允许,因为您需要为该操作提供特定权限,因此建议使用FileProvider,但老实说它是' sa像我这样的初学者有点太难了。我试了几个小时都失败了。

MainActivity

public class MainActivity extends AppCompatActivity {

int CAPTURE_REQUEST;
Button button;
Bitmap thumbnail;

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

    button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAPTURE_REQUEST);
        }

    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == CAPTURE_REQUEST) {
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
            sendImage();
        }
    }
}


private void sendImage() {
    Intent intent = new Intent(MainActivity.this, NextActivity.class);
    intent.putExtra("image", thumbnail);
    startActivity(intent);
}}

NextActivity

public class NextActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    ImageView imageView = (ImageView) findViewById(R.id.imageView);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_next);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        Bitmap image = (Bitmap) extras.get("image");
        if (image != null) {
            imageView.setImageBitmap(image);
        }
    }
}}

1 个答案:

答案 0 :(得分:2)

将onActivityResult更改为

super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
    if (requestCode == CAPTURE_REQUEST) {
        thumbnail = (Bitmap) data.getExtras().get("data");
        sendImage();
    }
}

您使用本地声明覆盖全局变量。

相关问题