Почему View.display возвращает ноль?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему View.display возвращает ноль?

Сообщение Anonymous »

Я пытаюсь реализовать CameraX с помощью этого руководства: https://codelabs.developers.google.com/ ... started/#5 Мое приложение имеет одно действие, хост навигации и два фрагмента. Также я использую привязку данных к своему фрагменту. Когда я пытаюсь повернуть дисплей, я получаю сообщение об ошибке.

Вот мой файл макета:
Вот мой фрагмент кода:

Код: Выделить всё

class CameraPreviewFragment : Fragment() {

private lateinit var binding: CameraPreviewFragmentBinding
private lateinit var viewModel: CameraPreviewViewModel

private val previewConfig = PreviewConfig.Builder().build()
private val preview = Preview(previewConfig)

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = CameraPreviewFragmentBinding.inflate(inflater, container, false)
binding.lifecycleOwner = this

val viewModelFactory = CameraPreviewViewModelFactory((activity as MainActivity).faceIDUtils)
viewModel = ViewModelProviders.of(this, viewModelFactory).get(CameraPreviewViewModel::class.java)
binding.viewModel = viewModel

startCamera()

return binding.root
}

private fun startCamera() {
preview.setOnPreviewOutputUpdateListener {
val parent = binding.cameraPreview.parent as ViewGroup
parent.removeView(binding.cameraPreview)
parent.addView(binding.cameraPreview, 0)

binding.cameraPreview.surfaceTexture = it.surfaceTexture
updateTransform()
}

CameraX.bindToLifecycle(this, preview, viewModel.analyzerUseCase)
}

private fun updateTransform() {
val matrix = Matrix()

val centerX = binding.cameraPreview.width / 2f
val centerY = binding.cameraPreview.height / 2f

val rotationDegrees = when(binding.cameraPreview.display.rotation) {
Surface.ROTATION_0 -> 0
Surface.ROTATION_90 -> 90
Surface.ROTATION_180 -> 180
Surface.ROTATION_270 -> 270
else -> return
}
matrix.postRotate(-rotationDegrees.toFloat(), centerX, centerY)

binding.cameraPreview.setTransform(matrix)
}

}

Я пытался добиться поворота следующим образом:binding.root.display.rotation. Но это тоже выдает ту же ошибку.

Вот ошибка: java.lang.IllegalStateException: привязка.cameraPreview.display не должна быть нулевой

Подробнее здесь: https://stackoverflow.com/questions/572 ... turns-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»