【发布时间】:2014-09-10 07:05:01
【问题描述】:
我尝试从图库中获取图像并从相机捕获图像并使用片段在我的 imageView 中显示图像,但 onActivityResult() 没有响应。下面是我从相机或图库中捕获图像的代码。
final CharSequence[] items = { "Take Photo", "Choose from Library",
"Cancel" };
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Add Photo!");
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if (items[item].equals("Take Photo")) {
final Intent intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, setImageUri());
startActivityForResult(intent, CAPTURE_IMAGE);
} else if (items[item].equals("Choose from Library")) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, ""),
PICK_IMAGE);
} else if (items[item].equals("Cancel")) {
dialog.dismiss();
}
}
});
builder.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println("OnActivityResult Call");
if (resultCode != Activity.RESULT_CANCELED) {
if (requestCode == PICK_IMAGE) {
imagePath = getAbsolutePath(data.getData());
myImageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageLoader.displayImage("file://" + imagePath, ivUpload,
options);
} else if (requestCode == CAPTURE_IMAGE) {
imagePath = getImagePath();
System.out.println("IMAGE PATH===" + imagePath);
myImageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageLoader.displayImage("file://" + imagePath, ivUpload,
options);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
private String getAbsolutePath(Uri uri) {
String[] projection = { MediaColumns.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = getActivity().managedQuery(uri, projection, null, null,
null);
if (cursor != null) {
int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} else
return null;
}
private Uri setImageUri() {
File file = new File(Environment.getExternalStorageDirectory()
+ "/DCIM/", "image" + new Date(CAPTURE_IMAGE).getTime()
+ ".png");
Uri imgUri = Uri.fromFile(file);
this.imagePath = file.getAbsolutePath();
return imgUri;
}
private String getImagePath() {
return imagePath;
}
请给我该片段的任何解决方案。我也尝试在活动中。它可以工作,但在片段中不会从图库上传图像。
【问题讨论】:
-
您在从图库中获取图片的片段中遇到什么问题?
-
当我从图库中选择任何图像时,不会调用 onActivityResult()。为什么?
-
在片段的父活动中覆盖
onActivityResult并在其中调用super.onActivityResult。