Kotlin:为什么有些代码只能在 Activity 的 OnCreate 中运行

Kotlin : Why some code only works within OnCreate of Activity

我是开发领域的初学者,试图了解一些概念。真棒的人可以在下面帮助我吗?快把我逼疯了!!

请看这段代码:

    val csvRawText = applicationContext.assets.open("sgsraagadata.csv").bufferedReader().use {
        it.readText()
    }

这就是我读取导入到资产中的 csv 文件的方式。 你能帮我理解一下吗:

  1. 当我 运行 在 OnCreate 之外以及我的其他变量声明和初始化时,为什么这段代码不起作用(致命的空指针错误)?
  2. 以及为什么它在不是 Activity 的单独 class 中也不起作用?我有一个名为 csvFile 的单独 class,我想在其中存放这段代码,但无论我把它放在哪里,它都不起作用。

发生这种情况是因为在调用 onCreate() 方法之前没有初始化 applicationContext。在其他 classes 中,您无法获取 applicationContext,因为只有 classes 表示上下文,例如 activity class 或服务 returns给你