Статические подобные методы в приложении 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
   }
}
Другие вопросы по тегам