处理活动到片段的结果

时间:2015-10-08 14:45:03

标签: android image android-fragments android-activity

我有一个片段,其中包含四个图像,每个图像在单击时打开一个库,供用户在检索图像名称和路径时从活动结果中选择图像我通过意图将此结果传递给活动在裁剪完成后处理裁剪活动中的图像裁剪我不知道如何将裁剪后的图像的结果发送回到片段并将其放置在图像视图中4个图像的相同过程如何可以我做到了。这是我的开始代码。

enter code here

attach_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pickFromGallery();
        }
    });
  private void pickFromGallery()
  {
    Intent galleryIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    try {
        // When an Image is picked
        if (requestCode == RESULT_LOAD_IMG && resultCode == getActivity().RESULT_OK
                && null != data) {
            // Get the Image from data

            Uri selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            // Get the cursor
            Cursor cursor = getContext().getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            // Move to first row
            assert cursor != null;
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            imgDecodableString = cursor.getString(columnIndex);
            cursor.close();
            startCrop(imgDecodableString);


        } else {
            Toast.makeText(getActivity(), "You haven't picked Image",
                    Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        Toast.makeText(getActivity(), "Something went wrong", Toast.LENGTH_LONG)
                .show();
    }
}
private void startCrop(String imageUri)
{
    Intent intent = new Intent(getActivity(),CropActivity.class);
    intent.putExtra("Image",imageUri);
    startActivity(intent);
}

} 在我的裁剪活动这里是我的代码

enter code here
Intent i = getIntent();
    image = i.getStringExtra("Image");
    Log.d("Image",""+image);
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    int imageWidth = (int) ( (float) metrics.widthPixels / 1.5 );
    int imageHeight = (int) ( (float) metrics.heightPixels / 1.5 );
    bitmap = BitmapLoadUtils.decode(image, imageWidth, imageHeight);
    imageCropView.setImageBitmap(bitmap);
    imageCropView.setAspectRatio(3, 2);
    findViewById(R.id.crop_btn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            if(!imageCropView.isChangingScale())
            {
                Bitmap b = imageCropView.getCroppedImage();
            }
        }
    });

在此处裁剪图像后,我需要在图像视图中的图像视图中设置此裁剪图像,对于图像的其余部分使用相同的过程,如何实现。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用 startActivityForResult(...)方法启动活动,以便重新发送数据。
至于如何使用intent传递位图,请检查this stackoverflow question

然后,您可以在片段的 onActivityResult(...)方法上获取位图。

答案 1 :(得分:1)

通过意图传递位图不是一个好习惯,如果位图很大就无法工作,因此应该避免使用。

我建议你将位图保存在磁盘上,并将保存图像的路径传递给片段。在此post

中查看已接受答案的修改

也不应该从片段调用startActivity()。它应该从另一个活动中完成。请检查此Communicating With Fragments Guide