微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否在Kotlin地图中将Android可绘制和字符串资源检索为整数或字符串

如何解决是否在Kotlin地图中将Android可绘制和字符串资源检索为整数或字符串

我在Android环境下学习Kotlin的时间只有两天。因此,构建Google课程骰子应用程序后,我决定检查是否可以通过将另一个名为res/的{​​{1}}文件添加values/文件夹来本地化该应用程序。这是为了支持一种本地语言。

但是,事情是我想使用values-af_/方法设置contentDescription的{​​{1}}并将ImageView设置为getString(R.string.img_dice_1)。根据骰子的掷骰,这两个值都将包含在字典/地图/关联数组中。 这是检查num变量是否为特定数字并检索资源的条件:

setimageResource
R.drawable.image

从地图中检索值时,logcat会出现以下错误

    val drawableRes = when (num) {
            1 -> mapOf("draw" to R.drawable.dice_1,"contDescription" to getString(R.string.img_dice_1))
            2 -> mapOf("draw" to R.drawable.dice_2,"contDescription" to getString(R.string.img_dice_2))
            3 -> mapOf("draw" to R.drawable.dice_3,"contDescription" to getString(R.string.img_dice_3))
            4 -> mapOf("draw" to R.drawable.dice_4,"contDescription" to getString(R.string.img_dice_4))
            5 -> mapOf("draw" to R.drawable.dice_5,"contDescription" to getString(R.string.img_dice_5))
            else -> mapOf("draw" to R.drawable.dice_6,"contDescription" to getString(R.string.img_dice_6))
        }

如果我不将地图的 imgOfDice.setimageResource(drawableRes["draw"] as Int) imgOfDice.contentDescription = (drawableRes["contDescription"] as Int).toString() 键转换为字符串,则会得到Caused by: java.lang.classCastException: java.lang.String cannot be cast to java.lang.Integer

有人可以指出正确的方向来检索地图值吗?

我找到了答案:我只需要将contDescription强制转换为Compiling error: Type mismatch: inferred type is Int but CharSequence! was expected,现在就可以了!

解决方法

是的,您正在尝试将“ draw”(字符串)转换为整数(R.drawable.x)

R.xx.xx始终返回整数值(例如ID)

val drawableRes = when (num) {
            1 -> mapOf(num to R.drawable.dice_1,"contDescription" to getString(R.string.img_dice_1))
            2 -> mapOf(num to R.drawable.dice_2,"contDescription" to getString(R.string.img_dice_2))
            3 -> mapOf(num to R.drawable.dice_3,"contDescription" to getString(R.string.img_dice_3))
            4 -> mapOf(num to R.drawable.dice_4,"contDescription" to getString(R.string.img_dice_4))
            5 -> mapOf(num to R.drawable.dice_5,"contDescription" to getString(R.string.img_dice_5))
            else -> mapOf(num to R.drawable.dice_6,"contDescription" to getString(R.string.img_dice_6))
        }
        imgOfDice.setImageResource(drawableRes[num] as Int)
        imgOfDice.contentDescription = (drawableRes["contDescription"] as Int).toString()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。