即使在调用完成()之后,自定义 CameraActivity 也会显示在屏幕上

Posted

技术标签:

【中文标题】即使在调用完成()之后,自定义 CameraActivity 也会显示在屏幕上【英文标题】:Custom CameraActivity is shown on screen even after calling finish() 【发布时间】:2017-03-23 05:54:51 【问题描述】:

我有两个活动:HomeActivityCameraActivityHomeActivity 使用带有标志Intent.FLAG_ACTIVITY_NEW_TASKstartActivityForResult 的意图调用CameraActivityCameraActivity 有一个片段可以打开一个自定义相机。我给了一个按钮来捕捉图像。如果用户单击按钮,则会调用相机的捕获回调,并且在onPictureTaken(byte[] data) 中我正在将数据数组写入图像文件并使用getActivity().finish() 完成活动,并将图像文件的路径返回到HomeActivity 并在 UI 上显示。

现在的问题是:

当我从CameraActivity 中的片段调用getActivity().finish() 时,它会调用HomeActivityonActivityResult。路径显示在TextView。日志也可以从HomeActivity 正确打印。但在屏幕上相机运行。每次都需要按下返回按钮来结束CameraActivity。 假设我正在捕获一次图像,但由于屏幕上的摄像头仍在运行,我尝试捕获它两次,控制返回到 HomeActivity,但 onActivityResult() 没有调用第二次捕获。

【问题讨论】:

【参考方案1】:

调试代码。我认为 startActivityForResult 被多次调用。

【讨论】:

不,我已经在 startActivityForResult 中打印了日志。那些只打印一次。那是第一次打电话【参考方案2】:

当我在 Activity 中使用 Fragment 时,当发生配置更改时,Activity 会重新启动并附加新的 Fragment 实例,因此它继续在屏幕上显示未完成的 Fragment。 我通过在配置更改时分离片段解决了这个问题。

【讨论】:

以上是关于即使在调用完成()之后,自定义 CameraActivity 也会显示在屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerview 完成按钮不起作用,即使它没有调用选择器方法

我可以在 maven-release 插件之后运行自定义 maven 插件吗?

即使使用 UIViewContentModeScaleAspectFill 也会调用自定义 UIView drawRect

即使在我指定了自定义 VPC 之后,我的用于自动缩放组的 Cloudformation YAML 也会继续在默认 VPC 中创建 EC2 实例

Easyui 自定义列 添加按钮 样式问题

Nuxt.js - 全局导入自定义 NPM 包