Статические подобные методы в приложении 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()
он всегда возвращает ноль. Я почерпнул все это из нескольких источников, но я не уверен, правильно ли это или нет.
1 ответ
Решение
Похоже, вы хотите глобальный объект контекста приложения. Теперь отбросив мою неприязнь к глобальным переменным, я думаю, что вы довольно близки.
Я думаю, вам просто нужно добавить переменную в 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
}
}