我有一个加载对话片段的片段。加载的DialogFragment是一种弹出式样式,允许用户选择一张照片或从相机中拍摄一张照片。我的DialogFragment类中有一个OnActivityResult方法,当他们拍摄照片或从图库中选择照片时,我想调用它。
问题是,我在父片段中也有onActivityResult。我添加了它,这样我可以在创建对话框时设置目标片段,然后在关闭对话框时获取回调,这样我就知道要执行其他操作。
我用这个来显示主片段中的对话片段…
DialogFragment profilePhotoChoose = new ProfilePhotoChoose();
profilePhotoChoose.setShowsDialog(true);
profilePhotoChoose.setCancelable(false);
profilePhotoChoose.setTargetFragment(MyMainFragment.this, REQUEST_CODE); // request code is simply int value
profilePhotoChoose.show(getActivity().getSupportFragmentManager(), "dialogPhotoChoose");
发生的是,触发主片段的OnActivityResult方法,而不是DialogFragment的OnActivityResult。
我如何确保它调用的是正确的?我是否需要为触发相机或画廊的意图添加一些内容?
更新
下面是我在DialogFragment中用于启动相机意图的代码。请注意,我正在使用支持对话框片段。
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(pictureIntent.resolveActivity(getActivity().getPackageManager()) != null){
try {
File file = .... // file stuff here
if (file != null) {
Uri photoURI = FileProvider.getUriForFile(getActivity(),"com.MYAPPID.android.provider", file);
pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(pictureIntent, REQUEST_CAPTURE_IMAGE);
}
} catch (Exception ex) {
}
}