android使用片段从相机或画廊获取照片[重复]

Posted

技术标签:

【中文标题】android使用片段从相机或画廊获取照片[重复]【英文标题】:android get photo from camera or gallery using fragments [duplicate] 【发布时间】:2018-04-20 18:39:29 【问题描述】:

我正在使用带有三个标签的FragmentPagerAdapter。每个选项卡都有多个fragments,在我请求从图库或相机获取照片的其中一个片段中。问题是托管选项卡的父 ActivityonActivityResult() 被调用,而不是 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;
    

这是我如何为画廊和相机调用 Intent

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

【问题讨论】:

发布您的画廊意图代码 【参考方案1】:

getActivity().startActivityForResult(..) 更改为startActivityForResult(..) 这会将结果意图传递给片段的onActivityResult(..)

在这篇 SO 帖子 here 中进行了很好的解释

【讨论】:

我已经按照建议的方式做了。还没有运气【参考方案2】:

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

【讨论】:

我在做同样的事情没有发生任何变化。 发送完整的activity和fragment代码。

以上是关于android使用片段从相机或画廊获取照片[重复]的主要内容,如果未能解决你的问题,请参考以下文章

其他方式来捕捉照片 android 应用程序

如何在 CollectionView 中显示从照片库或相机中选择的图像?画廊视图

从android中的画廊和相机中捕获图像

Android - 相机和画廊意图后的裁剪给出了奇怪的结果

从相机或画廊获取全尺寸图片

Ionic 2 Android 相机/画廊崩溃