如何在Kotlin中声明类对象

时间:2019-06-02 05:33:08

标签: class object kotlin

我正在我的应用程序中实现用户注册系统,并希望将用户数据逐步保存在名为“ UserProfile”的类中。

我设法创建了一个类并声明了它的对象,但是当我单击按钮时,应用程序没有响应。我的代码没有显示错误。我想我无法正确声明该类的对象。

class RegisterActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_register)

        class UserProfile {
            private lateinit var username: String
            private lateinit var mobile: String
            private lateinit var email: String
            private lateinit var address1: String
            private lateinit var address2: String
            private lateinit var gender: String
            fun add(data:String,i:Int){
                when (i){
                    1 -> username = data
                    2 -> mobile = data
                    3 -> email = data
                    4 -> address1 = data
                    5 -> address2 = data
                    6 -> gender = data
                }
            }
        }
        var registrationStep= 1
        lateinit var user: UserProfile
        val inputBox = findViewById<EditText>(R.id.editText)
        val textBox = findViewById<TextView>(R.id.textView)
        val data = inputBox.text.toString()
        val nextBTN = findViewById<Button>(R.id.NextBtn)
        nextBTN.setOnClickListener {
            println("Clicked Listener2")
            user.add(data,registrationStep)

            when (registrationStep){
                1 ->  textBox.text = getString(R.string.register1)
                2 ->  textBox.text = getString(R.string.register2)
                3 ->  textBox.text = getString(R.string.register3)
                4 ->  textBox.text = getString(R.string.register4)
                5 ->  textBox.text = getString(R.string.register5)
                6 ->  textBox.text = getString(R.string.register6)
            }
            registrationStep += 1
        } 
   }
}

我希望在按下“按钮”按钮时,将“ EditText”值保存在类中,并且将更改“ TextView”的文本。但是,相反,当我单击“按钮”按钮时,应用程序会继续关闭而不响应。

1 个答案:

答案 0 :(得分:0)

您需要在使用前实例化类的对象。声明不等同。因此,替换

lateinit var user: UserProfile

使用

var user: UserProfile = UserProfile()