我无法更改 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

伴生对象将确保变量的相同实例随处使用