0

我无法显示位图图像。在我的应用程序中,用户可以单击图像视图,然后会出现一个警报对话框提示选择使用相机拍照或从文件中获取图片。我有一个名为“图像”的图像视图。这是我的警报对话框侦听器:

if(option == 0) // take a picture option
                    {   
                        try
                        {   
                            Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                            ContentValues values = new ContentValues();
                            values.put(MediaStore.Images.Media.TITLE, Constants.PIC_FILENAME_PREFIX + System.currentTimeMillis() + Constants.PIC_FILENAME_SUFFIX);
                            mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

                            captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);

                            captureIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 2 * 1024 * 1024); // limit to 2MB data

                            startActivityForResult(captureIntent, CAMERA_CAPTURE);// start activity
                        } 
                        catch (ActivityNotFoundException anfe)
                        {
                            String errorMessage = "It appears your device does not have camera..";
                            Toast.makeText(UploadPhoto.this, errorMessage, Toast.LENGTH_SHORT).show();

                        }                                       
                    }
                    else if(option==1)
                    {
                        Intent intent = new Intent();
                        intent.setType("image/*");
                        intent.setAction(Intent.ACTION_GET_CONTENT);
                        startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_FROM_FILE);
                    }

以下是我的活动结果:

public void ActivityResult(int request, int result, Intent intentdata)
    {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPurgeable = true;
        options.inInputShareable = true;

        if(result ==RESULT_OK)
        {
            if(request==SELECT_FROM_FILE)
            {
                mCapturedImageURI = intentdata.getData();
            }

            String[] projection = { MediaStore.Images.Media.DATA };
            Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null);
            if(null==cursor)
            {
                return;
            }

            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

            cursor.moveToFirst();
            mCapturedFilePath = cursor.getString(column_index);
            stopManagingCursor(cursor);
            cursor.close();

            // compute the boundary first
            options.inJustDecodeBounds = true;
            Bitmap bitmap = BitmapFactory.decodeFile(mCapturedFilePath, options);
            // get image from file
            options.inSampleSize = ImageUtil.calculateInSampleSize(options, Constants.PIC_IMAGE_DISP_WIDTH, Constants.PIC_IMAGE_DISP_HEIGHT);
            options.inJustDecodeBounds = false;
            bitmap = BitmapFactory.decodeFile(mCapturedFilePath, options);

            bitmap = Bitmap.createScaledBitmap(bitmap, Constants.PIC_IMAGE_DISP_WIDTH, Constants.PIC_IMAGE_DISP_HEIGHT, false);

            image.setImageBitmap(bitmap);//I'm trying to change this imageview
        }
    }

当用户单击其中一个选项并获取或选择文件时,imageView 不会更改。有人有推荐吗?

4

2 回答 2

1

方法应该是

protected void onActivityResult(int requestCode, int resultCode, Intent intent)

如果您只是在这里打错字,请尝试在设置图像后添加 invalidate()。

于 2013-06-12T06:31:16.363 回答
0

我找到了另一种解决方案及其对我的工作。

这里

final ImageView thumb = (ImageView) findViewById(R.id.thumbnail);
    thumb.post(new Runnable() {
        @Override
        public void run()
        {
            Bitmap bmp = BitmapFactory.decodeFile(image_path);
            thumb.setImageBitmap(bmp);
            Toast.makeText(this, "Image Saved", Toast.LENGTH_SHORT).show();
        }
    });
于 2017-11-29T07:56:33.303 回答