В Java и Android мы можем сделать это:
public static MyApplication extends Application {
private static Context appContext;
public void onCreate() {
appContext = this;
}
public static Context getAppContext() {
return appContext;
}
}
Так что где-то еще мы можем сделать это:
appContext = MyApplication.getAppContext();
Как мы это делаем в Котлине? Я ходил кругами в течение последнего часа или около того.
Заранее спасибо.
// Редактировать Возможно, я должен был быть более ясным. Я имел в виду, как мы можем написать выше в Kotlin и использовать его в Kotlin.
5 ответов
Ключевым элементом, который мне не хватало, было использование блока init для установки appContext, который находится внутри объекта-компаньона (я уже пробовал путь к объекту-компаньону, но изо всех сил пытался получить набор appContext).
Смотрите код ниже:
class MyApplication : Application() {
init {
appContext = this
}
companion object {
lateinit var appContext: Context
private set
}
}
Это тогда вызывается как обычно через:
val testContext = MyApplication.appContext
Кажется, вы хотите только один объект этого класса во время выполнения. Это называется синглтоном . Есть рекомендации для правильной реализации этого в Java. К счастью, Kotlin позволяет напрямую объявлять одноэлементные объекты в верхней области видимости:
val o = object { your attributes and methods here}
Вы можете использовать это таким образом
companion object{
//your static fields
}
Чтобы вызвать его из kotlin ==> ClassName.FieldName
Чтобы вызвать его из Java ==> ClassName.Companion.getFieldName ()
Предполагается, что у вас есть java
код в Android, и вы хотите преобразовать его в kotlin
код:
- Посетите ссылку
- найти
Convert from java
Это помогает мне преобразовать код java
, который я нашел в Интернете, и преобразовать его в код kotlin
,
пусть это
answer
не поможет вам в вашем вопросе, но поможет вам преобразовать то, что вы знаете вjava
, что вы не знаете, как это сделать вkotlin
В Котлине это называется «объект-компаньон»:
class MyApplication: Application {
companion object {
var appContext: Context? = null
private set
}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .