从Activity设置Dialog ImageView

时间:2014-11-17 02:25:46

标签: android imageview alertdialog photo onactivityresult

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);
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您可以在对话框中创建一个公共方法,以便在其自定义视图中访问图像视图。

public ImageView getDialogImageView()类似,然后在您的活动中检查图片视图是否为空,如果不是,则在onActivityResult中设置图像。您可能还希望使用WeakReference来执行此操作,以便在您完成后可以对其进行垃圾回收。