android使用片段从相机或画廊获取照片[重复]
Posted
技术标签:
【中文标题】android使用片段从相机或画廊获取照片[重复]【英文标题】:android get photo from camera or gallery using fragments [duplicate] 【发布时间】:2018-04-20 18:39:29 【问题描述】:我正在使用带有三个标签的FragmentPagerAdapter
。每个选项卡都有多个fragments
,在我请求从图库或相机获取照片的其中一个片段中。问题是托管选项卡的父 Activity
的 onActivityResult()
被调用,而不是 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使用片段从相机或画廊获取照片[重复]的主要内容,如果未能解决你的问题,请参考以下文章