Kotlin:为什么某些代码只能在Activity的OnCreate中使用

时间:2018-09-18 14:54:14

标签: android kotlin oncreate applicationcontext

我是开发人员的初学者,试图让我了解一些概念。有人可以请以下帮助我吗?真让我发疯!

请看一下这段代码:

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

这就是我读取导入到Assets中的csv文件的方式。 能否请您帮助我理解

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

非常感谢!

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为在调用onCreate()方法之前未初始化applicationContext。在其他类中,您无法获得applicationContext,因为只有表示上下文的类(例如活动类或服务)才能将其返回给您