Android 照相机图像未显示在ImageView中

Android 照相机图像未显示在ImageView中,android,android-camera,Android,Android Camera,我想在ImageView中显示从相机捕获的图像。我可以打开相机并为图像创建一个目录,但当我将图像传递给intent并尝试调用它时,图像不会显示。这就是我正在做的: private static final int REQUEST_CODE = 1; private ImageView addPicture; private Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { supe

我想在ImageView中显示从相机捕获的图像。我可以打开相机并为图像创建一个目录,但当我将图像传递给intent并尝试调用它时,图像不会显示。这就是我正在做的:

private static final int REQUEST_CODE = 1;
private ImageView addPicture;
private Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(//setting the view);

    addPicture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
            imagesFolder.mkdirs(); // <----
            File image = new File(imagesFolder, "image_001.jpg");
            Uri uriSavedImage = Uri.fromFile(image);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            startActivityForResult(imageIntent, 0);
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    addPicture = (ImageView) findViewById(R.id.profilepicture_registerone);

    if (requestCode == REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            try {
                InputStream stream = getContentResolver().openInputStream(data.getData());
                bitmap = BitmapFactory.decodeStream(stream);
                addPicture.setImageBitmap(bitmap);
                stream.close();


            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {

            }

            RoundImage image = new RoundImage(bitmap);

        } else if (resultCode == RESULT_CANCELED) {
            // User cancelled the image capture
        } else {
            Toast.makeText(getApplicationContext(), "Bad Image Request. Please Try Again!", Toast.LENGTH_LONG).show();
        }
    }

}
private static final int REQUEST_code=1;
私有图像视图添加图片;
私有位图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(//设置视图);
addPicture.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent imageIntent=新的Intent(MediaStore.ACTION\u IMAGE\u CAPTURE);
File imagesFolder=新文件(Environment.getExternalStorageDirectory(),“MyImages”);

imagesFolder.mkdirs();//您需要在
onCreate()
中找到具有正确ID标记的ImageView ID

 addPicture = (ImageView) findViewById(R.id.profilepicture_registerone);


请检查位图,它是否为空?

是否确实为imageview使用了正确的id。在代码中,xml中的id为“picture”,但您参考java中的profilepicture\u registerone?

试试这个

在类区域声明常量:

final int TAKE_PHOTO_REQ = 100;
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, TAKE_PHOTO_REQ);
调用摄像机意图:

final int TAKE_PHOTO_REQ = 100;
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, TAKE_PHOTO_REQ);
将活动结果(..)添加到您的活动中

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case TAKE_PHOTO_REQ: {
            if (resultCode == TakePicture.RESULT_OK && data != null) {

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



                imageView.setImageBitmap(myBmp);
                break;
            }
        }
        }
    }
*仍然存在问题,然后检查您的图像视图是否正确


希望这会有所帮助…谢谢

为了这篇文章,我更改了一些内容。我会在文章中编辑这些内容,但即使使用正确的IDsI,错误仍然会发生。我发现
data.getData()
方法返回null,并在测试时抛出NullPointerException(如果为null或非null)。您的文件是在SD卡中创建的?是的,图像存储在SD卡上。为了这篇文章,我更改了一些内容,但忘了更改所有内容。因此,我已还原了它们,但即使使用正确的IDSI ima,错误仍然会发生ge正在手机上保存图像,您可以使用其他应用程序查看图像吗?可以。图像将保存为文件夹“MyImages”中的“image_001.jpg”。尝试使用bundle传递图像,可能当前通过intent传递的图像为空。找到解决方案了吗?@solomonPowell@Mano不幸的是,没有。我甚至尝试从我的drawable文件夹中加载一张股票图像,作为
onActivityResult()中的图像文件
这也不起作用。奇怪的是,在调用OnActivityResults时,请尝试此代码。如果有任何疑问,请询问我此代码将在剪辑库和相机中都起作用。在创建后在内部创建图像视图,不要将OnActivity结果放在内部