我无法更改 public 变量 Kotlin
I can't change a public variable Kotlin
我尝试在 kotlin 中更改 public 变量,但我做不到。当我在另一个脚本中收到变量时,它没有改变。我在第二个脚本中打印变量,但随后它显示为零。我不知道为什么。请帮我。我卡住了。这是我的代码:
package com.backal.bingolooooooooooooto
import android.content.Intent
import android.os.Bundle
import android.util.Log.d
import android.view.View
import androidx.appcompat.app.AppCompatActivity
class AddFavourActivity: AppCompatActivity() {
public var clicked = 0;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.add_favour)
val alt1: View = findViewById(R.id.alt1)
val alt2: View = findViewById(R.id.alt2)
val alt3: View = findViewById(R.id.alt3)
val alt4: View = findViewById(R.id.alt4)
val alt5: View = findViewById(R.id.alt5)
val alt6: View = findViewById(R.id.alt6)
val alt7: View = findViewById(R.id.alt7)
alt1.setOnClickListener {
var clicked = 50
startActivity(Intent(this, EnterPasswordActivity::class.java))
}
alt2.setOnClickListener {
var clicked = 80
d("Alexander", "Clicked is: $clicked")
startActivity(Intent(this, EnterPasswordActivity::class.java))
}
alt3.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 100
}
alt4.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 300
}
alt5.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 500
}
alt6.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 100
}
alt7.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 1000
}
}
}
当您这样做时,您不断创建一个名为 clicked
的新变量:
var clicked = 80
你应该简单地做:
clicked = 80
注意我删除了 var
就像你不这样做一样它只是在块的范围内创建一个名为 clicked
的新变量并且它不会修改全局 clicked
您创建的变量。
每次你做 var clicked = 50
你都在声明一个新变量(即使它是同名的)所以只需删除 var :
clicked = 50
您可能要考虑的其他事情是使用伴随对象:
companion object {
var clicked = 0
}
然后你可以在任何地方使用这个变量,只需使用:AddFavourActivity.clicked
或AddFavourActivity.clicked = 50
伴生对象将确保变量的相同实例随处使用
我尝试在 kotlin 中更改 public 变量,但我做不到。当我在另一个脚本中收到变量时,它没有改变。我在第二个脚本中打印变量,但随后它显示为零。我不知道为什么。请帮我。我卡住了。这是我的代码:
package com.backal.bingolooooooooooooto
import android.content.Intent
import android.os.Bundle
import android.util.Log.d
import android.view.View
import androidx.appcompat.app.AppCompatActivity
class AddFavourActivity: AppCompatActivity() {
public var clicked = 0;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.add_favour)
val alt1: View = findViewById(R.id.alt1)
val alt2: View = findViewById(R.id.alt2)
val alt3: View = findViewById(R.id.alt3)
val alt4: View = findViewById(R.id.alt4)
val alt5: View = findViewById(R.id.alt5)
val alt6: View = findViewById(R.id.alt6)
val alt7: View = findViewById(R.id.alt7)
alt1.setOnClickListener {
var clicked = 50
startActivity(Intent(this, EnterPasswordActivity::class.java))
}
alt2.setOnClickListener {
var clicked = 80
d("Alexander", "Clicked is: $clicked")
startActivity(Intent(this, EnterPasswordActivity::class.java))
}
alt3.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 100
}
alt4.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 300
}
alt5.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 500
}
alt6.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 100
}
alt7.setOnClickListener {
startActivity(Intent(this, EnterPasswordActivity::class.java))
clicked = 1000
}
}
}
当您这样做时,您不断创建一个名为 clicked
的新变量:
var clicked = 80
你应该简单地做:
clicked = 80
注意我删除了 var
就像你不这样做一样它只是在块的范围内创建一个名为 clicked
的新变量并且它不会修改全局 clicked
您创建的变量。
每次你做 var clicked = 50
你都在声明一个新变量(即使它是同名的)所以只需删除 var :
clicked = 50
您可能要考虑的其他事情是使用伴随对象:
companion object {
var clicked = 0
}
然后你可以在任何地方使用这个变量,只需使用:AddFavourActivity.clicked
或AddFavourActivity.clicked = 50
伴生对象将确保变量的相同实例随处使用