在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中编写上述内容并在Kotlin中使用它。
答案 0 :(得分:5)
在Kotlin中,这被称为“伴侣对象”:
class MyApplication: Application {
companion object {
var appContext: Context? = null
private set
}
}
答案 1 :(得分:2)
我缺少的关键元素是使用init块来设置伴随对象内的appContext(我已经尝试了伴随对象路径,但实际上已经设置了appContext)。
见下面的代码:
class MyApplication : Application() {
init {
appContext = this
}
companion object {
lateinit var appContext: Context
private set
}
}
然后可以通过以下方式调用:
val testContext = MyApplication.appContext
答案 2 :(得分:1)
假设您在Android中有一些java
代码,并且您想将其转换为kotlin
代码:
Convert from java
帮助我转换我在互联网上找到的java
代码并将其转换为kotlin
代码,
这可能
answer
对您的问题没有帮助,但它可以帮助您将java
中您不知道该怎么做的内容转换为kotlin
答案 3 :(得分:0)
你可以这样使用
companion object{
//your static fields
}
从kotlin ==>调用它ClassName.FieldName
从java ==>中调用它ClassName.Companion.getFieldName()
答案 4 :(得分:0)
在运行时,您似乎只想要此类的一个对象。这称为单身。有建议在Java中正确实现。幸运的是,Kotlin直接允许您在顶部范围内声明单例对象:
val o = object { your attributes and methods here}