提问人:macizett 提问时间:1/29/2023 更新时间:1/29/2023 访问量:587
无法访问数据类 kotlin 中的变量
Can't access variable in data class kotlin
问:
为什么我无法访问其他类中的变量?(该变量在数据类中,当我想访问它时,它会抛出“未解析的引用”)
它看起来像这样:
尝试访问变量的代码:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class questionActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_question)
var nameDisplay: TextView = findViewById(R.id.nameDisplay)
var name2 = usernameStore.username //here's the error, the "username" thing is red
nameDisplay.setText(name2)
}
}
数据类:
package com.ketchup.myquizzies
public data class usernameStore (
var username: String
)
任何帮助感谢伙计们,我从字面上搜索了我想到的所有事情来解决这个问题,但我无法控制自己:(
Android Studio、Kotlin
答:
2赞
CommonsWare
1/29/2023
#1
usernameStore
是一个类
,而不是一个对象
。您需要创建一个实例才能使用它。usernameStore
class questionActivity : AppCompatActivity() {
val store = usernameStore()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_question)
var nameDisplay: TextView = findViewById(R.id.nameDisplay)
var name2 = store.username
nameDisplay.setText(name2)
}
}
评论
0赞
Arnaldo
1/29/2023
另外:请记住:类名必须混合大小写,每个内部单词的第一个字母大写 (CamelCase)。在这种情况下:'QuestionActivity', 'UsernameStore'。
0赞
CommonsWare
1/29/2023
@Arnaldo:这是一个流行的惯例。但是,AFAIK,Kotlin 类没有大写规则。
1赞
Nirwal
1/29/2023
#2
您尚未创建类的实例
usernameStore
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class questionActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_question)
var nameDisplay: TextView = findViewById(R.id.nameDisplay)
// replace with below code
var name2 = usernameStore().username
nameDisplay.setText(name2)
}
}
评论