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

时间:2017-07-12 10:03:37

标签: android kotlin

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

//Primary:
class Main2Activity(val name: String) {

}

//Secondary:
constructor(a: Int) : super() {
   this.a = a
}

所以android studio给了我创建这个辅助构造函数的选项。但它并没有认识到我在上面写的主要构造函数。我也尝试过其他几种方式,比如init和all。它给出了错误,即在没有定义主要构造函数的情那么如何编写主构造函数。

1 个答案:

答案 0 :(得分:3)

两点:

  1. 使用this关键字代替super
  2. 将字符串参数传递给主构造函数
  3. 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非常好解释

      

    显然, [主要和次要构造函数] 存在各种语法差异。但是一个主要的概念差异是所有辅助构造函数最终都委托给主构造函数。

         

    我想到的方式是主构造函数是用于创建对象的规范接口,而辅助构造函数就像静态助手一样,用于转换其他参数集以符合此接口。

    有关详细信息:Constructors