即使在调用完成()之后,自定义 CameraActivity 也会显示在屏幕上
Posted
技术标签:
【中文标题】即使在调用完成()之后,自定义 CameraActivity 也会显示在屏幕上【英文标题】:Custom CameraActivity is shown on screen even after calling finish() 【发布时间】:2017-03-23 05:54:51 【问题描述】:我有两个活动:HomeActivity
和 CameraActivity
。 HomeActivity
使用带有标志Intent.FLAG_ACTIVITY_NEW_TASK
和startActivityForResult
的意图调用CameraActivity
。 CameraActivity
有一个片段可以打开一个自定义相机。我给了一个按钮来捕捉图像。如果用户单击按钮,则会调用相机的捕获回调,并且在onPictureTaken(byte[] data)
中我正在将数据数组写入图像文件并使用getActivity().finish()
完成活动,并将图像文件的路径返回到HomeActivity
并在 UI 上显示。
现在的问题是:
当我从CameraActivity
中的片段调用getActivity().finish()
时,它会调用HomeActivity
的onActivityResult
。路径显示在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 实例