如何使用kotlin定义一个android应用class?
How to use kotlin to define a android Application class?
这是我的代码:
object MyApplication : Application() {
override fun onCreate() {
super.onCreate()
initOkHttp()
}
}
当我在 AndroidManifest
中声明 MyApplication
时,出现了 has no default constructor
,有人可以帮助我吗?
enter image description here
使用以下方法将类型从对象
更改为class
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
initOkHttp()
}
}
您应该使用 class
而不是 Object
,以使其正常工作。
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
initOkHttp()
}
}
你得到这个错误的原因是因为 object
修饰符有效地使你的 class 成为一个单例,因此没有实际的方法来实例化它。因此用 class
替换它,这相当于普通的 Java class.
解决方案是使用class
关键字代替object
。 Kotlin 中的 object
declaration 是单例,这意味着它只有一个实例,并且它有一个私有构造函数来防止创建任何其他实例。
然而,在 Android 上的 Application
class 的情况下,框架本身将在您的应用程序启动时创建实例,这需要一个可访问的私有构造函数。
这样你就可以创建一个应用程序class
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
}
}
这是我的代码:
object MyApplication : Application() {
override fun onCreate() {
super.onCreate()
initOkHttp()
}
}
当我在 AndroidManifest
中声明 MyApplication
时,出现了 has no default constructor
,有人可以帮助我吗?
enter image description here
使用以下方法将类型从对象
更改为classclass MyApplication : Application() {
override fun onCreate() {
super.onCreate()
initOkHttp()
}
}
您应该使用 class
而不是 Object
,以使其正常工作。
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
initOkHttp()
}
}
你得到这个错误的原因是因为 object
修饰符有效地使你的 class 成为一个单例,因此没有实际的方法来实例化它。因此用 class
替换它,这相当于普通的 Java class.
解决方案是使用class
关键字代替object
。 Kotlin 中的 object
declaration 是单例,这意味着它只有一个实例,并且它有一个私有构造函数来防止创建任何其他实例。
然而,在 Android 上的 Application
class 的情况下,框架本身将在您的应用程序启动时创建实例,这需要一个可访问的私有构造函数。
这样你就可以创建一个应用程序class
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
}
}