class - 如何在 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”按钮时会被更改。但是,当我单击“按钮”按钮时,应用程序会继续关闭并且没有响应。
解决方案
您需要在使用之前实例化您的类的对象。声明不等价。所以更换
lateinit var user: UserProfile
和
var user: UserProfile = UserProfile()
推荐阅读
- android - 使用自定义适配器从列表视图中搜索项目
- snowflake-cloud-data-platform - 唯一 ID 的第一个实例时的情况
- parsing - 具有超过 2 个递归的运算符优先级
- php - 为什么 is_user_logged_in() 从另一个站点重定向后返回 false?
- sql-server - T-SQL 中十进制计算列的精度
- java - 如何在 node.js express 应用程序中运行 java 代码
- java - com.example.f_a_11_8_2019 E/SpannableStringBuilder:SPAN_EXCLUSIVE_EXCLUSIVE 跨度不能有零长度
- azure - 为使用链接模板进行 ARM 部署的 Blob 存储容器获取 SAS 令牌
- flutter - 用户如何在谷歌地图颤振上添加多个标记
- mysql - 将陀螺仪应用程序从 mysql (latin1) 迁移到 mariadb (utf8) 时出现字符编码问题