无法在Android中为Kotlin中的Activity类编写主要构造函数

从文档我试图做这样的事情

//Primary: class Main2Activity(val name: String) { } //Secondary: constructor(a: Int) : super() { this.a = a } 

所以Android工作室给了我创建这个二级构造函数的选项。 但它不承认我上面写的主要构造函数。 我也尝试了一些其他方式,如初始化和所有。 它给了我错误的二次构造不允许没有定义主要的一个。 那么如何编写主构造函数。

两点:

  1. 使用this关键字,而不是super
  2. 将一个字符串参数传递给您的主构造函数

 class Main2Activity(val name: String) { var a: Int = 0 constructor(a: Int) : this("myString") { this.a = a } } 

例:

 val first = Main2Activity("Kotlin") print("${first.name} ${first.a}") // >>> Kotlin, 0 val second = Main2Activity(11) print("${second.name} ${second.a}") // >>> myString, 11 

@Oliver Charlesworth非常好的解释

显然, [主要和次要建设者之间]有各种语法差异。 但是一个重要的概念上的区别是,所有的二级构造函数最终都委托给主构造函数。

我想这样做的主要构造函数是用于创建对象的规范接口,而次要构造函数就像用于转换其他参数集以符合此接口的静态帮助器。

更多信息: 构造函数