所以,我已经阅读了一些有关此问题的帖子,但我无法解决这个问题。 基本上我有这个对话框,用户可以选择拍摄新照片或从他们的画廊中选择一张照片。这是代码:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setCancelable(true)
.setItems(R.array.galeria_camera_array, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int userChoice) {
if (userChoice == 1) {
// take photo
}
if (userChoice == 0) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, 1);
}
}
});
return builder.create();
}
然后,onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//choose file from gallery
}
有人可以帮忙吗?在我不得不重新阅读10页理论之前......我对这类事情很新(onResult)。谢谢。
答案 0 :(得分:0)
解决此问题的简便方法是将片段的onActivityResult
移动到您的活动中,或者您可以使用活动的onActivityResult
来调用片段中的方法。
我查看了我的代码,显然我设法通过从我的片段调用this.getActivityForResult
来解决这个问题,然后结果返回到我的片段,但我会诚实地对你说:我不记得了写这个。
答案 1 :(得分:0)
尝试在触发对话框片段的活动中实现类似的操作:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.myFragmentId);
fragment.onActivityResult(requestCode, resultCode, data);
下划线活动是接受onActivityResult的,所以你应该能够指出'它朝向对话框片段的onActivityResult。
答案 2 :(得分:0)
好的,这两件事使它成功了:
getActivity().startActivityForResult(galleryIntent, 1);
您必须添加getActivity()
onActivityResult()
。谢谢你们!