Android初学者在这里..
我的Dialog Fragment中有一个方法可以拍照:
public void takePhoto() {
Intent takePhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
getActivity().startActivityForResult(takePhoto, REQUEST_TAKE_PHOTO);
}
我意识到onActivityResult方法必须在"片段调用活动"中,但是如何在onActivityResult的Dialog中设置ImageView?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
// Set an ImageView in my Dialog Fragment
mImageView.setImageBitmap(imageBitmap);
}
}
SOLUTION:
在我的DialogFragment中声明了这个字段:
private static View layout;
...
layout = View.inflate(mContext, R.layout.new_post_dialog_layout, null);
将此方法添加到我的DialogFragment:
public static ImageView getDialogImageView() {
ImageView iv = (ImageView) layout.findViewById(R.id.imagePost);
return iv;
}
修改了onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
NewPostDialog.getDialogImageView().setImageBitmap(imageBitmap);
}
}
答案 0 :(得分:1)
我认为您可以在对话框中创建一个公共方法,以便在其自定义视图中访问图像视图。
与public ImageView getDialogImageView()
类似,然后在您的活动中检查图片视图是否为空,如果不是,则在onActivityResult
中设置图像。您可能还希望使用WeakReference来执行此操作,以便在您完成后可以对其进行垃圾回收。