嘿,所以我正在嘗試制作一個簡單的搜索欄,但我遇到了一些奇怪的問題。大約一年前,我在 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) {
}
}
}
}
uj5u.com熱心網友回復:
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")
}
})
uj5u.com熱心網友回復:
您只能在類方法之一中修改超出初始宣告的變數,在這種情況下,onCreate是您唯一宣告的變數。
您必須在宣告時為它們分配一個值,或者如果您不確定該值需要什么,則將其設為 nullable(optional)/lateinit。使用 lateinit 并在變數初始化之前嘗試使用它會導致崩潰。
您可能想查看此主題以獲取更多資訊: Kotlin - 如何在“lateinit”和“可空變數”之間做出決定?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/405615.html
標籤:
