我正在遍历Google的Android代码实验室,构建了一个骰子滚轴应用程序,并对我的函数getRandomDiceImage()的返回类型如何为Int类型感到困惑,但似乎该函数正在返回ImageView。

我理解获取随机整数并将其存储在randomInt中,并且获得了类似于标准C语言的switch语句。但是,将该randomInt转换为R.drawable.image会让我失望。

private fun getRandomDiceImage(): Int {
    val randomInt = Random().nextInt(6) + 1

    return when (randomInt) {
        1 -> R.drawable.dice_1
        2 -> R.drawable.dice_2
        3 -> R.drawable.dice_3
        4 -> R.drawable.dice_4
        5 -> R.drawable.dice_5
        else -> R.drawable.dice_6
    }

}

private fun rollDice() {
    diceImage.setImageResource(getRandomDiceImage())
    diceImage2.setImageResource(getRandomDiceImage())
}

最佳答案



不,它返回的是images resource identifier,即@DrawableRes int,等等。



窍门是R.drawable.dice_1期望setImageResource(值(用int注释以确保它实际上是可绘制资源),基于ImageView将加载可绘制标识符所引用的位图资源。

关于android - 对返回when语句感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56566965/

10-11 22:30
查看更多