【发布时间】:2018-05-29 18:13:51
【问题描述】:
我有一个加载 DialogFragment 的 Fragment。加载的 DialogFragment 是一种弹出式样式,允许用户选择照片或从相机中拍摄照片。我的 DialogFragment 类中有一个 onActivityResult 方法,我想在他们拍摄照片或从图库中选择照片时调用它。
问题是,我在父 Fragment 中也有一个 onActivityResult。我添加了它,以便在创建对话框时设置目标片段,然后在关闭对话框时获取回调,以便我知道执行其他操作。
我用它在我的主要片段中显示 DialogFragment...
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 方法被触发,而不是对话框片段的 onActivityResult。
如何确保它调用正确的?我是否需要向触发相机或图库的意图添加一些内容?
更新
这是我用于从 DialogFragment 中启动相机意图的代码。请注意,我正在使用支持 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) {
}
}
【问题讨论】:
-
我刚刚意识到您的问题是仅将某些请求转发到您的片段,我稍微编辑了我的问题,我相信您可以在重定向之前在您的活动
onActivityResult中添加对requestCode的检查它到某个片段,例如,如果requestCode为 1,则转到父片段,如果为 2,则转到子片段
标签: android android-fragments android-intent