【问题标题】:android seekBar in kotlin cant create setOnSeekBarChangeListenerkotlin 中的 android seekBar 无法创建 setOnSeekBarChangeListener
【发布时间】:2022-01-08 19:38:10
【问题描述】:

嘿,所以我正在尝试制作一个简单的搜索栏,但我遇到了一些奇怪的问题。 大约一年前,我在 kotlin 中编写了一个应用程序,它与我现在所经历的不同。首先,为什么我只能用lateinit初始化?然后我只能访问 onCreate 中的变量?无论如何,我试图制作一个搜索栏,但出于某种原因 kotlin 无法识别它,就像它不明白我想要做什么一样

代码:

class Generator : AppCompatActivity() {


lateinit var username: EditText
lateinit var app: EditText
lateinit var password: TextView

lateinit var caps: Switch
lateinit var numbers: Switch
lateinit var symbols: Switch

lateinit var seekbarvalue: TextView
lateinit var length: SeekBar

lateinit var generate: Button
lateinit var copy: Button
lateinit var save: Button
override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_generator)

    username = findViewById<EditText>(R.id.username)
    app = findViewById<EditText>(R.id.app)
    password = findViewById<TextView>(R.id.password)

    caps = findViewById<Switch>(R.id.caps)
    numbers = findViewById<Switch>(R.id.numbers)
    symbols = findViewById<Switch>(R.id.symbols)

    seekbarvalue = findViewById<TextView>(R.id.seekbarvalue)
    length = findViewById<SeekBar>(R.id.length)

    generate = findViewById<Button>(R.id.generate)
    copy = findViewById<Button>(R.id.copy)
    save = findViewById<Button>(R.id.save)

    length.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener){
        override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {

        }

    }
}

}

【问题讨论】:

    标签: android kotlin seekbar


    【解决方案1】:
     length.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
    
            }
    
            override fun onStartTrackingTouch(p0: SeekBar?) {
                TODO("Not yet implemented")
            }
    
            override fun onStopTrackingTouch(p0: SeekBar?) {
                TODO("Not yet implemented")
            }
    
        })
    

    【讨论】:

      【解决方案2】:

      您只能在类方法之一中修改超出初始声明的变量,在这种情况下,onCreate 是您唯一声明的变量。

      您必须在声明时为它们分配一个值,或者如果您不确定该值需要什么,则将其设为可空(可选)/lateinit。使用 lateinit 并在变量初始化之前尝试使用它会导致崩溃。

      您可能需要查看此主题以获取更多信息: Kotlin - How to decide between "lateinit" and "nullable variable"?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-18
        相关资源
        最近更新 更多