拍照后返回fragment

Posted

技术标签:

【中文标题】拍照后返回fragment【英文标题】:Return to fragment after taking a picture 【发布时间】:2017-08-03 19:28:51 【问题描述】:

我有 3 个片段 A、B 和 C

A-->B-->C

我从fragment C打开相机拍照,拍的时候点击OK保存,所以回到开始fragmentA就像应用程序被关闭了,那么要怎么做才能留在我打开相机的片段 C 中?

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                        String root = Utils.getFirstWritableDirectory().toString();
                        File myDir = new File(root+"/.XXXX_IMAGES");

                        if(!myDir.exists())
                            myDir.mkdirs();
                        File file = new File(myDir+File.separator + time+".jpg");
                        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                        startActivityForResult(intent, XX);

【问题讨论】:

如何在片段 C 中拍照?通过意图或自定义相机视图? 按意图,你可以看到我的代码。 切换时有addreplace碎片吗? 【参考方案1】:

使用Intent 调用摄像头会创建并将该摄像头的Activity 带到您的前面,从而触发onPause() 方法。如果 Activity 被杀死以回收内存,也可以调用 onStop()

根据您如何更改片段 A、B 和 C 之间的视图,它们的状态可能会在 onStop() 上丢失,从而导致您的应用程序重置为片段 A,默认状态。

要解决这个问题,您必须分别通过覆盖 onRestoreInstanceState()onSaveInstanceState()(或者,根据您希望片段的持久性,onCreate()/onStop())来实现状态保存和恢复,恢复 C如果它确实是最后一个片段。

您的ActivityonActivityResult() 将在onRestoreInstanceState() 之后调用。

【讨论】:

我使用onSaveInstanceState将状态从fragment传递到Activity,然后在Activity上我调用onRestoreInstanceState,它现在可以工作了!

以上是关于拍照后返回fragment的主要内容,如果未能解决你的问题,请参考以下文章

Android--利用相机或相册截取用户头像(解决了miui无法截取,以及部分机型拍照无返回Uri)

从相机拍照后 UIImageView 旋转

PhoneGap 2.3:Cordova 拍照 API (camera.getPicture) API 返回 onDestory

Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题

关于android中调用系统拍照,返回图片是旋转90度

Android 调用系统相机拍照后 添加文字水印