Android在片段中选择图像

时间:2016-12-13 05:38:35

标签: android android-fragments uri

我对此非常困惑。检查我的代码

// Read bitmap
public Bitmap readBitmap(Uri selectedImage) {
    Bitmap bm = null;
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 4;
    AssetFileDescriptor fileDescriptor = null;
    try {
        fileDescriptor = appContext.getContentResolver().openAssetFileDescriptor(selectedImage,"r");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    finally{
        try {
            bm = BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options);
            fileDescriptor.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return bm;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri filePath = data.getData();
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        bitmap = readBitmap(filePath);
        SuggestImage.setImageBitmap(bitmap);
    }
}

我在这里收到错误

bitmap = readBitmap(filePath);

说不兼容的类型需要int但是当我把它和int说它不能应用。需要帮助谢谢

我认为因为它在片段中。我认为问题是我无法获得ContentResolver,但我不确定

1 个答案:

答案 0 :(得分:0)

我们假设你的片段中有一个按钮editPic,点击你必须从图库中选择图像。使用以下代码实施从图库中选择

editPic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                    Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    // ******** code for crop image
                    i.putExtra("crop", "true");
                    i.putExtra("aspectX", 100);
                    i.putExtra("aspectY", 100);
                    i.putExtra("outputX", 300);
                    i.putExtra("outputY", 300);
                    try {
                        i.putExtra("return-data", true);
                        startActivityForResult(
                                Intent.createChooser(i, "Select Picture"), 0);
                    }catch (ActivityNotFoundException ex){
                        ex.printStackTrace();
                    }

            }
        });

并在片段中使用以下代码onActivityResult

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==0 && resultCode == Activity.RESULT_OK){
            try {
                Bundle bundle = data.getExtras();
                Bitmap bitmap = bundle.getParcelable("data"); // use this bitmap
                img.setImageBitmap(bitmap); //set image to imageView
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

希望它对你有用。