java - Camera2 - 更改 fragment 时为 "Must be called from main thread of fragment host"

标签 java android android-fragments exception

我试图使用以下代码在拍摄图像后更改 fragment Google Sample - Camera2Basic

我在上述示例的第 839 行实现了对 MainActivity 的回调。但是,当我尝试从该回调遍历到不同的 Activity 时,我收到以下异常:

java.lang.IllegalStateException: Must be called from main thread of fragment host

有人知道这件事吗?

最佳答案

我有 Kotlin 中的工作代码 您必须将此回调替换为:

  val captureCallback = object : CameraCaptureSession.CaptureCallback() {

            override fun onCaptureCompleted(session: CameraCaptureSession,
                                            request: CaptureRequest,
                                            result: TotalCaptureResult) {
                sendBackResult(mFile)
            }
        }

        mCaptureSession!!.capture(captureBuilder.build(), captureCallback, mBackgroundHandler)
    } catch (e: CameraAccessException) {
        e.printStackTrace()
    }

sendBackResult方法如下:

private fun sendBackResult(resultFile: File?) {
    val fileUri = Uri.fromFile(resultFile)
    val dataIntent = Intent()
    dataIntent.data = fileUri
    dataIntent.putExtra("isFront", isFrontCamera)
    activity!!.setResult(Activity.RESULT_OK, dataIntent)
    activity!!.finish()
}

关于java - Camera2 - 更改 fragment 时为 "Must be called from main thread of fragment host",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55015464/

相关文章:

java - 在 DispatcherServlet 中未找到名称为 'appServlet' 的 URI [/simplexonline/] 的 HTTP 请求的映射

java - @Digits 约束(Bean Validation-JSR 303)如何支持 String 类型?

java - 如何使用 ProcessBuilder (Java) 获取 Ant 构建的状态

android - BigPictureStyle 通知在小米 MIUI-8 中无法正确显示

android - 如何从其他 fragment 调用 fragment 中的 AsyncTask?

Java Semaphore Await Idleness对其他线程有影响吗?

android - 查询 POST 请求

android - 如何正确关闭 Landscape VideoView Activity?

java - 将 FragmentActivity 中的数据与 ViewPager 结合使用,用于 Fragment 内的自定义 ListView 适配器

java - PreferenceActivity 子类不应在 list 中导出 (ExportedPreferenceActivity)