1

我正在尝试向我的 Kotlin 中的 MyApplication 类添加一个“静态”方法,我已经添加了(作为属性)变量:

private var context: Context? = null

在方法中:

override fun onCreate()

我补充说:

context = applicationContext

然后我添加一个像这样的伴随对象

companion object {
    @JvmStatic fun getMyApplicationContext(): Context?
    {
        return MyApplication().context
    }
}

当我从应用程序的其他部分调用此方法时, MyApplication.getMyApplicationContext()它总是返回 null。我从几个来源收集了所有这些信息,但我不确定它是否接近正确。

4

1 回答 1

4

听起来您想要一个全局应用程序上下文对象。现在抛开我对全局变量的厌恶,我认为你非常接近。

我认为您只需将变量添加到MyApplication类伴生对象中并直接使用它。@JvmField如果您要从 Java 访问该字段,则只需要注释。

class MyApplication {
   companion object {
      @JvmField
      var context: Context? = null

      // Not really needed since we can access the variable directly.
      @JvmStatic fun getMyApplicationContext(): Context? {
        return context
      }
   }

   override fun onCreate() {
     ...
     MyApplication.context = appContext
   }
}
于 2017-01-23T01:59:25.700 回答