gpt4 book ai didi

android - 我有一个代码,其中调用了Lateinit变量后对其进行了初始化,但我不知道如何

转载 作者:行者123 更新时间:2023-12-02 13:10:29 26 4
gpt4 key购买 nike

在跟进有关udacity的Kotlin开发Android应用程序类(class)的过程中,我发现讲师已经制作了一个Lateinit变量lateinit var diceImage: ImageView,因为她稍后会对其进行初始化。
* 在rollDice()函数中调用了Lateinit变量,但是在setOnClickListner中调用该函数后对该变量进行了初始化

rollButton.setOnClickListener {
rollDice()
}
diceImage = findViewById(R.id.dice_Image)
您可以在下面找到完整的代码
 package com.example.diceroller

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import kotlin.random.Random

class MainActivity : AppCompatActivity() {
private var rollNumber:Int = 0
lateinit var diceImage: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.roll_Button)
rollButton.setOnClickListener {
rollDice()
}
diceImage = findViewById(R.id.dice_Image)
}
fun rollDice() {
val diceImage: ImageView = findViewById(R.id.dice_Image)
var randomInt: Int
do {
randomInt = Random.nextInt(6) + 1
} while (randomInt == rollNumber)
rollNumber = randomInt
when (rollNumber) {
1 -> diceImage.setImageResource(R.drawable.dice_1)
2 -> diceImage.setImageResource(R.drawable.dice_2)
3 -> diceImage.setImageResource(R.drawable.dice_3)
4 -> diceImage.setImageResource(R.drawable.dice_4)
5 -> diceImage.setImageResource(R.drawable.dice_5)
else -> diceImage.setImageResource(R.drawable.dice_6)
}
}
}
由于我是android开发的新手,所以我不知道如何在roleDice()函数中调用它后对其进行初始化
谁能为我解决这个问题? ....不应该在setOnClickListner之前调用它吗?
感谢您的帮助!

最佳答案

setOnClickListener只是注册了一个回调lambda,只要单击rollButton就会调用该回调lambda,调用setOnClickListener不会立即调用rollDice()。在onCreate()的生命周期中很早就调用了AppCompatActivity方法,因此您的用户将无法在diceImage = findViewById(R.id.dice_Image)行运行之前点击按钮,因此这是绝对安全的代码。

关于android - 我有一个代码,其中调用了Lateinit变量后对其进行了初始化,但我不知道如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64216220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com