CropActivity不是从Fragment中的onActivityResult开始的

时间:2018-05-04 17:17:35

标签: android fragment

我打算选择一个图像,然后将图像裁剪为宽高比(1,1),但是当我运行应用程序时,图库正在打开但是当我选择图像时它会关闭并返回到片段。

以下是我点击监听器上按钮的代码

    mImageBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            Intent galleryIntent = new Intent();
            galleryIntent.setType("image/*");
            galleryIntent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(Intent.createChooser(galleryIntent, 
   "SELECT IMAGE"), GALLERY_PICK);
  }
    });

这是onActivityResult的代码

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

    if(requestCode == GALLERY_PICK && resultCode == RESULT_OK){

        Uri imageUri = data.getData();

        CropImage.activity(imageUri)
                .setAspectRatio(1, 1)
                .setMinCropWindowSize(500, 500)
                .start(getActivity());

        Toast.makeText(SettingsActivity.this, imageUri, 
 Toast.LENGTH_LONG).show();

    }
   @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) 
 {
  if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
 CropImage.ActivityResult result = CropImage.getActivityResult(data);
 if (resultCode == RESULT_OK) {
  Uri resultUri = result.getUri();
   } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) 
{
  Exception error = result.getError();
  }
 }
}

当我选择图片

时,裁剪活动没有开始,应用程序返回到片段屏幕

以下是MainActivity的代码,其中我使用了底部导航视图并使用了OnActivity结果

  private void showPlacePicker() {
    PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
    try {
        startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
    } catch (Exception e) {
        Log.e(TAG, e.getStackTrace().toString());
    }
 }


  @Override
   public void onActivityResult(int requestCode, int resultCode, Intent 
   data) {
    if (requestCode == PLACE_PICKER_REQUEST) {
        if (resultCode == RESULT_OK) {
 ----code---
  }
  }

2 个答案:

答案 0 :(得分:0)

我在我的一个项目中使用了这个库,并且我没有明确地创建一个图像选择器,而是让库为我处理它。去做这个, 在你的代码中

mImageBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {


        CropImage.activity()
            .setAspectRatio(1, 1)
            .setMinCropWindowSize(500, 500)
            .start(getContext());
  }
});

处理结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);

        if (resultCode == RESULT_OK) {

            Uri imageUri = result.getUri();
            //handle the image



        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
            //handle error

        } else if(resultCode == RESULT_CANCELED){
          //handle cancel case
        }
    }
}

了解更多information

答案 1 :(得分:0)

在使用appcompact片段的情况下,我们不能使用.start(getActivity())来启动作物活动。 代替此用途:

.start(getContext(), this)

这是片段中的代码:

CropImage.activity(uri).setGuidelines(CropImageView.Guidelines.ON).start(getContext(), this);