lateinit 属性实例尚未初始化,同时制作应用程序

问题描述

我是一名开发闹钟应用的新开发者(如果我可以称自己为)。我想我制作了应用程序的其他部分,但无论我怎么努力,我都无法找到解决错误方法。为了在AlarmManager.kt 中访问实例,我不得不制作实例伴随对象。但我想这会导致问题......请有人告诉我如何解决这个错误?提前致谢!

kotlin.UninitializedPropertyAccessException:lateinit 属性实例尚未初始化

↓ SampleApplication.kt

class SampleApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        instance = this
    }

    companion object {
        lateinit var instance: SampleApplication private set
    }
}

↓报警管理器.kt

object AlarmManager {
    var mService: MusicService? = null
    lateinit var mediaPlayer: MediaPlayer
    lateinit var mView: View
    lateinit var mTimer: Timer
    val tag1 = "alarm1"
    val tag2 = "alarm2"
    private val windowManager: WindowManager by lazy {
        SampleApplication.instance.getSystemService(Context.WINDOW_SERVICE) as WindowManager
    }

解决方法

您需要在 AndroidManifest 文件中注册 SampleApplication。然后只有它会作为应用程序类执行

<application
    android:name=".SampleApplication">