如何解决是否在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 举报,一经查实,本站将立刻删除。