首页 > 解决方案 > 如何在 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”的文本在按下“Button”按钮时会被更改。但是,当我单击“按钮”按钮时,应用程序会继续关闭并且没有响应。

标签: classobjectkotlin

解决方案


您需要在使用之前实例化您的类的对象。声明不等价。所以更换

lateinit var user: UserProfile

var user: UserProfile = UserProfile()

推荐阅读