我正在尝试通过以下方式在我的Kotlin应用中以编程方式加载可绘制对象
resources.getDrawable(R.drawable.XXX)
而我得到的是:
Method threw 'android.content.res.Resources$NotFoundException' exception.
无论目标可绘制对象是什么。
在尝试了不同的方法之后,我终于尝试了一个新创建的Kotlin项目,结果发现它也不起作用。
然后,我创建了一个新的Java项目,在此项目中,所有工作均正常进行。
我没有找到关于在线上遇到相同问题的人们的任何信息,我可以在两个项目中都获得“Resources”对象,但在Kotlin一个项目中找不到可绘制对象。
有什么可以做的事让我不知道吗?
编辑:
我在新创建的项目中获得了这样的资源:
override fun onResume() {
super.onResume()
val drawable = resources.getDrawable(R.drawable.ic_launcher_foreground)
}
无论目标资源是什么,可绘制对象,mipmap,颜色...
我在使用Gradle 3.5.3和Kotlin 1.3.61,API级别26的Android Studio 3.5.3上
项目资源是项目创建时添加的资源
最佳答案
我找到了一个临时修复程序,其中大部分都非常有趣。
以“ic_launcher_background”为例作为随机可绘制对象,Java给出了以下结果:
虽然Kotlin中的确切等效代码为我们提供了此功能:
我不明白为什么,但是当使用项目生成的Kotlin方式时,可通过 R 检索的ID与资源类所使用的ID不匹配。
因此,现在我将使用“getIdentifier()”方法来解决我的问题,但这并不是您自然要做的事情。
如果对这里发生的事情有更好的了解的人可以揭开这个谜,那将不胜感激。
关于android - 无法使用Kotlin以编程方式检索资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60336591/