我试图使用以下代码在拍摄图像后更改 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/