Camera2 - «Должен вызываться из основного потока узла-фрагмента» при изменении фрагмента - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь изменить фрагмент после получения изображения со следующим кодом Google Sample - Camera2Basic .

Я реализовал обратный вызов для моей MainActivity в строке 839 вышеприведенного примера.Однако, когда я пытаюсь перейти к другой активности, отличной от этого обратного вызова, я получаю следующее исключение:

java.lang.IllegalStateException: должен вызываться из основного потока узла-фрагмента

Кто-нибудь знает что-нибудь об этом?

1 Ответ

2 голосов
/ 06 марта 2019

У меня есть рабочий код в Котлине Вы должны заменить этот обратный вызов на:

  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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...