使用 kotlin 的 Android 应用程序中的静态类方法

Static like methods in Android application with kotlin

我正在尝试在 kotlin 中向我的 MyApplication class 添加一个 "static" 方法 我添加了(作为 属性)变量:

private var context: Context? = null

在方法中:

override fun onCreate()

我补充说:

context = applicationContext

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

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

当我从应用程序的其他部分调用此方法时,例如 MyApplication.getMyApplicationContext() 它始终 returns 为空。我从多个来源收集了所有这些信息,但我不确定它是否接近正确。

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

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

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
   }
}