Camera2-更改片段时“必须从片段主机的主线程调用”

时间:2019-03-06 04:14:11

标签: java android android-fragments exception

我尝试使用以下代码Google Sample - Camera2Basic拍摄图像后更改片段。

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

  

java.lang.IllegalStateException:必须从的主线程调用   片段主机

有人知道吗?

1 个答案:

答案 0 :(得分:2)

我在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()
}