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

奥马尔·哈立德(Omar Khaled)

在跟进有关Kocity的udacity开发Android应用程序课程的过程中,我发现讲师已经制作了一个Lateinit变量,lateinit var diceImage: ImageView因为她稍后会对其进行初始化,然后再将其初始化为
* * lateinit变量在rollDice()函数中被调用,但该变量为在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)在行运行之前点击按钮,因此这是绝对安全的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我已经制作了一个登录系统,但是,我不知道如何设置其中的某些样式

初始化变量。我不知道他们的类型[java]

我创建了一个库存系统,但我不知道如何进行

我在调用构造函数时有一个错误(我认为)不知道如何解决它

尝试调用未绑定的fn,但我已对其进行了定义

角度2:按Enter键会触发一个方法,但我不知道如何停止它

Angular 6的路由无法与“ Router”模块一起使用,我想我有一个错误,但我不知道它是什么

我的USB HSM已初始化,现在我不知道如何使用它

ThreadLocal.get()返回null,即使我之前对其进行了初始化

我需要帮助,我想在代码中放入一个踢踢和禁止命令,但我不知道该把它放在哪里

我想做一个计数对象,但我不知道如何解决

我想调用一个stock.setPrice()方法,但是我不知道如何

如果我创建一个原子变量,线程之间是否对原子变量进行了所有操作?

我有一个函数,可以创建数组并对其进行混洗,但是我不知道如何以我想要的方式调用它

我需要初始化一个我以前真的不知道的东西,它在Ruby中是什么

Rails功能规格:调用了外部Google字体API,但我不知道在哪里

我的代码出错,但我不知道如何修复

我不知道如何使用 boost,虽然我的老师确实提供了代码,但我收到了一个错误

我创建了一个后缀数组,但我不知道这段代码有什么问题

我有一个输入为图像的表单,但我不知道如何将输入标签的名称属性发送到 mysql 数据库?

只有一个媒体查询有效,但我不知道为什么

Boolean 尚未初始化,但是,我在代码中早些时候对其进行了初始化

一些 sml 代码,但我不知道它是如何工作的

即使我在循环之外对其进行了初始化,Python 变量也会在每个循环中更新

在不知道类型的情况下初始化一个 swift 变量

我在 Flutter 中有一个错误,我不知道如何解决

列表框项目初始化,但一旦被选中,我不知道如何重置没有选择任何项目的列表框

我必须制作一个汽车经销商程序,但我不知道如何从文件中读取

我的代码给了我一个元组错误,我不知道为什么