0

我正在使用FragmentPagerAdapter三个选项卡。每个选项卡都有多个fragments,在这些片段之一中,我请求从图库或相机中获取照片。问题是托管选项卡onActivityResult()的父级Activity被调用而不是Fragment. 帮助赞赏。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case MEDIA_TYPE_IMAGE_FROM_GALLERY:
            if (resultCode == RESULT_OK) {
                Uri selectedImage = data.getData();
                String realPath = getImageRealPath(selectedImage);
                realPaths.add(realPath);
                Glide.with(mActivity)
                        .load(realPath)
                        .into(profile_imv);
            }
            break;
        case MEDIA_TYPE_IMAGE_BY_CAMERA:
            if (resultCode == RESULT_OK) {
                Uri selectedImage = data.getData();
                String realPath = getImageRealPath(selectedImage);
                realPaths.add(realPath);
                Glide.with(mActivity)
                        .load(realPath)
                        .into(profile_imv);
            }
            break;
    }
}

这是我如何称呼画廊和相机的意图

public void choosePhotoFromGallary() {
    Intent galleryIntent = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    startActivityForResult(galleryIntent, MEDIA_TYPE_IMAGE_FROM_GALLERY);
}

private void takePhotoFromCamera() {
    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    if (intent.resolveActivity(mActivity.getPackageManager()) != null) {
        startActivityForResult(intent, MEDIA_TYPE_IMAGE_BY_CAMERA);
    }
}

这是MainACtivity onActivityResult()代码

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Fragment fragment = getSupportFragmentManager().findFragmentByTag("USER_DETAILS");
    if (fragment != null) {
        fragment.onActivityResult(requestCode, resultCode, data);
    }
}
4

2 回答 2

0

getActivity().startActivityForResult(..)对此进行更改startActivityForResult(..)会将结果意图传递给片段的onActivityResult(..)

在这里的这篇 SO 帖子中进行了精美的解释

于 2017-11-08T07:15:34.313 回答
0

覆盖片段内的 onActiviyResult() 并在那里重新编写代码。

于 2017-11-08T07:19:40.323 回答