使用 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
}
}
我正在尝试在 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
}
}