在onActivityResult中收到两个requestCode == UCrop.REQUEST_CROP?
Receive two requestCode == UCrop.REQUEST_CROP in onActivityResult?
我正在使用 uCrop 库来执行图像裁剪。
我需要在同一个 activity 中剪切两个不同的图像。但是使用我的代码,return 陷入了一个循环。
我怎么能把这个return分开,独立对待呢?
代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == UCrop.RESULT_ERROR) {
Toast.makeText(this, "uCrop error", Toast.LENGTH_SHORT).show();
return;
}
if (requestCode == UCrop.REQUEST_CROP) {
mSelectImage.setImageResource(0);
final Uri imgUri = UCrop.getOutput(data);
mResultUri = imgUri;
mSelectImage.setImageURI(mResultUri);
temDadosSalvar = true;
Toast.makeText(this, "Cortada", Toast.LENGTH_SHORT).show();
return;
}
if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
mProgress.dismiss();
return;
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
Uri destinationUri = Uri.fromFile(tempCropped);
UCrop uCrop = UCrop.of(mImageUri, destinationUri);
uCrop = advancedConfig(uCrop);
uCrop.start(this);
}
}
if (requestCode == CAMERA_REQUEST_CODE_CAPA && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
mProgress.dismiss();
return;
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
Uri destinationUri = Uri.fromFile(tempCropped);
UCrop uCrop = UCrop.of(mImageUri, destinationUri);
uCrop = advancedConfig(uCrop);
uCrop.start(this);
}
}
}
}
您可以创建两个 class 变量来识别正在裁剪过程中的图像。
private Uri mDestinationCapa;
private Uri mDestinationCamera;
if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
...
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
mDestinationCamera= Uri.fromFile(tempCropped);
...
}
}
if (requestCode == CAMERA_REQUEST_CODE_CAPA && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
...
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
mDestinationCapa = Uri.fromFile(tempCropped);
...
}
}
在 ActivityResult 上,您可以将结果 Uri 与本地 Uris 进行比较:
if (requestCode == UCrop.REQUEST_CROP) {
final Uri imgUri = UCrop.getOutput(data);
if(mDestinationCamera != null && imgUri.equals(mDestinationCamera)){
//save camera cropped image
}if(mDestinationCamera != null && imgUri.equals(mDestinationCamera)){
//save capa cropped image
}
return;
}
我正在使用 uCrop 库来执行图像裁剪。
我需要在同一个 activity 中剪切两个不同的图像。但是使用我的代码,return 陷入了一个循环。
我怎么能把这个return分开,独立对待呢?
代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == UCrop.RESULT_ERROR) {
Toast.makeText(this, "uCrop error", Toast.LENGTH_SHORT).show();
return;
}
if (requestCode == UCrop.REQUEST_CROP) {
mSelectImage.setImageResource(0);
final Uri imgUri = UCrop.getOutput(data);
mResultUri = imgUri;
mSelectImage.setImageURI(mResultUri);
temDadosSalvar = true;
Toast.makeText(this, "Cortada", Toast.LENGTH_SHORT).show();
return;
}
if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
mProgress.dismiss();
return;
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
Uri destinationUri = Uri.fromFile(tempCropped);
UCrop uCrop = UCrop.of(mImageUri, destinationUri);
uCrop = advancedConfig(uCrop);
uCrop.start(this);
}
}
if (requestCode == CAMERA_REQUEST_CODE_CAPA && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
mProgress.dismiss();
return;
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
Uri destinationUri = Uri.fromFile(tempCropped);
UCrop uCrop = UCrop.of(mImageUri, destinationUri);
uCrop = advancedConfig(uCrop);
uCrop.start(this);
}
}
}
}
您可以创建两个 class 变量来识别正在裁剪过程中的图像。
private Uri mDestinationCapa;
private Uri mDestinationCamera;
if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
...
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
mDestinationCamera= Uri.fromFile(tempCropped);
...
}
}
if (requestCode == CAMERA_REQUEST_CODE_CAPA && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
...
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
mDestinationCapa = Uri.fromFile(tempCropped);
...
}
}
在 ActivityResult 上,您可以将结果 Uri 与本地 Uris 进行比较:
if (requestCode == UCrop.REQUEST_CROP) {
final Uri imgUri = UCrop.getOutput(data);
if(mDestinationCamera != null && imgUri.equals(mDestinationCamera)){
//save camera cropped image
}if(mDestinationCamera != null && imgUri.equals(mDestinationCamera)){
//save capa cropped image
}
return;
}