拍照后返回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 中拍照?通过意图或自定义相机视图? 按意图,你可以看到我的代码。 切换时有add
或replace
碎片吗?
【参考方案1】:
使用Intent
调用摄像头会创建并将该摄像头的Activity
带到您的前面,从而触发onPause()
方法。如果 Activity
被杀死以回收内存,也可以调用 onStop()
。
根据您如何更改片段 A、B 和 C 之间的视图,它们的状态可能会在 onStop()
上丢失,从而导致您的应用程序重置为片段 A,即默认状态。
要解决这个问题,您必须分别通过覆盖 onRestoreInstanceState()
和 onSaveInstanceState()
(或者,根据您希望片段的持久性,onCreate()
/onStop()
)来实现状态保存和恢复,恢复 C如果它确实是最后一个片段。
您的Activity
的onActivityResult()
将在onRestoreInstanceState()
之后调用。
【讨论】:
我使用onSaveInstanceState将状态从fragment传递到Activity,然后在Activity上我调用onRestoreInstanceState,它现在可以工作了!以上是关于拍照后返回fragment的主要内容,如果未能解决你的问题,请参考以下文章
Android--利用相机或相册截取用户头像(解决了miui无法截取,以及部分机型拍照无返回Uri)
PhoneGap 2.3:Cordova 拍照 API (camera.getPicture) API 返回 onDestory