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

我想添加一个“静态”方法,我的MyApplication类在kotlin我已经添加(作为一个属性)的变量:

private var context: Context? = null 

在方法中:

 override fun onCreate() 

我补充说:

 context = applicationContext 

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

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

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

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

我想你只需要将变量添加到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 } }