【发布时间】:2022-01-12 19:36:54
【问题描述】:
我是一个完整的初学者,并且已经开始通过 YouTube 教程和 Google 搜索细节来学习 Kotlin。
当我在学习教程时,他在MainActivity 类中创建了三个变量,如下所示
class MainActivity : AppCompatActivity() {
var firstName= "David"
var secondName= "Tal"
var age = 20
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
接下来,他在私有函数中使用创建的变量,如下所示:
private fun nameRating(){
if(firstName == secondName){
Toast.makeText(applicationContext,"10/10", Toast.LENGTH_LONG).show()
}else{
Toast.makeText(applicationContext,"5/10", Toast.LENGTH_LONG).show()
}}
我按照示例在 Android Studio 中重新创建了它,但是触发了 if 条件,我觉得这很奇怪。调试后发现firstName 和secondName 都是"0"。我认为变量应该是全局的,但令人困惑的是为什么它不起作用,因为 age 变量是正确的。
如果我对这应该如何工作完全错误,我们将不胜感激任何解释/澄清。
【问题讨论】:
-
这取决于,我们看到你的整个代码了吗?如果我将您在上面发布的内容复制到一个活动中,并且如果我从 onCreate 内部仅调用 nameRating 函数,我将获得所有 3 个变量的预期值。将所有 3 个字段的“var”关键字更改为“val”,看看 Kotlin 编译器是否报错。如果它抱怨,这意味着您在代码中的其他地方将这些字段更改为不同的值(年龄除外,因为那个值是相同的)。在调用 nameRating() 函数之前,可能会发生这种情况,其他代码运行并将前两个变量设置为“0”。
标签: android string kotlin global-variables var