Search code examples
androidkotlinandroid-camera

CameraKitView library is not getting initialized with Kotlin


I am trying to setup CameraKitView. I followed the docs, but my CameraKitView in my Activity is not getting initialized. I have tried to initialize the CameraKitView in different ways without any luck. My XML looks like the following:

<com.camerakit.CameraKitView
   android:id="@+id/camerakit"
   android:layout_width="match_parent"
   android:layout_height="400dp"
   android:adjustViewBounds="true"
   android:keepScreenOn="true"
   app:camera_flash="auto"
   app:camera_facing="back"
   app:camera_focus="continuous"
   app:camera_permissions="camera"/>

My activity looks like that:

class CameraActivity: AppCompatActivity() {

    lateinit var camerakitview: CameraKitView

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        setContentView(R.layout.activity_camera)
        camerakitview = findViewById<CameraKitView>(R.id.camerakit)
    }

    override fun onStart() {
        super.onStart()
        camerakitview.onStart()
    }

    override fun onResume() {
        super.onResume()
        camerakitview.onResume()
    }

    override fun onPause() {
        camerakitview.onPause()
        super.onPause()
    }

    override fun onStop() {
        camerakitview.onStop()
        super.onStop()

    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        camerakitview.onRequestPermissionsResult(requestCode, permissions, grantResults)
    }
}

The error looks like the following:

UninitializedPropertyAccessException: lateinit property camerakitview has not been initialized

What did I overlook?

EDIT: I tried the same code in a Java Class instead of Kotlin. That way the camera works.


Solution

  • The problem was that I used the method:

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)
    

    Instead of:

    override fun onCreate(savedInstanceState: Bundle?)