Это в основном то же самое.Котлин не слишком отличается от Java.Фактически, вставка кода Java в файл Kotlin в Android Studio приведет к появлению запроса с вопросом, хотите ли вы преобразовать этот код.
В любом случае:
Класс приложения:
class App : Application() {
companion object {
var context: Context? = null
}
override fun onCreate() {
super.onCreate()
context = this;
}
}
Затем из любого другого класса:
val context = App.context
val someString = context?.resources.getString(R.string.some_string) //context is nullable so "?" is needed
Не забудьте добавить
android:name=".App"
на тег application
в вашем AndroidManifest.Если приложение не находится в корне вашего пакета, вам нужно изменить значение, чтобы отразить, где оно находится.
Если вам нужно получить к нему доступ из Java:
App.COMPANION.getContext();
Android Studio может жаловаться на утечки контекста.Однако это не должно быть точным, поскольку контекст приложения будет существовать до тех пор, пока ваше приложение работает, и как только ваше приложение будет убито (или остановлено), не будет даже запущенной JVM с утечкой.