我试图通过以下方式在我的 kotlin 应用程序中以编程方式加载一个 drawable

resources.getDrawable(R.drawable.XXX)

我得到的只是:

Method threw 'android.content.res.Resources$NotFoundException' exception.

无论目标 drawable 是什么。

在尝试了不同的东西之后,我终于尝试了一个新创建的 Kotlin 项目,却发现它也不起作用。 然后我创建了一个新的 Java 项目,在这个项目中一切正常。

我在网上没有发现有同样问题的人,我可以在两个项目中获得“Resources”对象,但在 Kotlin 中找不到可绘制对象。

有什么我不知道的事情可以使它工作吗?

编辑:我在新创建的项目中获得了这样的资源:

override fun onResume() {
    super.onResume()

    val drawable = resources.getDrawable(R.drawable.ic_launcher_foreground)
}

无论目标资源是什么,drawables,mipmaps,颜色……都会发生这种情况。

我在 Android Studio 3.5.3 上使用 gradle 3.5.3 和 Kotlin 1.3.61,API 级别 26

项目资源是在项目创建时添加的资源

#1楼 票数:0 已采纳

我找到了一个临时修复,主要是一些非常有趣的东西。 以“ic_launcher_background”作为随机绘制的例子,Java给出了这个结果:

在此处输入图片说明

虽然 Kotlin 中完全等效的代码给了我们这个: 在此处输入图片说明

我不明白为什么,但是在使用以 Kotlin 方式生成的项目时,可通过R检索的 Id 与Resources类使用的 Id 不匹配。

所以现在我将使用“getIdentifier()”方法来解决我的问题,但这真的不是你想要自然而然地做的事情。

如果有人对这里发生的事情有更好的了解,可以解开这个谜团,那将不胜感激。

#2楼 票数:0

尝试这个:

override fun onResume() {
    super.onResume()

        val drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_launcher_foreground, null)
}

  ask by Muro translate from so

未解决问题?本站智能推荐:

2回复

为什么CheckBox不能通过编程方式与Kotlin一起使用?

我想可能会问过这个问题,但是这个问题也发生在我身上,因此,我再次在这里询问我们是否可以找到解决方案。 因此,基本上的问题是使Checkbox不能通过编程方式与Kotlin代码一起使用。 为了说明,我分享了我的代码和问题的屏幕截图。 这是整个布局的xml: 这是科特林的声明
2回复

使用 Kotlin 以编程方式更改“包含”中的布局

我正在编写一个简单的游戏,我希望主屏幕可以选择 3 种布局,分别适用于 2 手、右手或左手。 我有一个include控件的内容。 但是,我正在努力以编程方式更改layout 。 从昨晚开始一直在寻找,但找不到方法,甚至可能吗?
1回复

使用 kotlin 以编程方式更改 material.textfield 的提示

我正在尝试更改material.textfield内的文本提示,例如: 我有一个具有实时价值的视图模型: 现在我想在它的视图模型中更改它并使用以下代码从主片段观察它: 我在 Logcat 中得到的错误是:
2回复

如何使用Kotlin以编程方式设置工具栏的边距

我想状态栏填充我的Action Bar的渐变背景。 所以我搜索了一些文章,并设法这样做。 但我知道彩色状态栏需要API级别21,所以我添加了检查API的条件。 在我的代码中,我有一个工具栏,其上边距设置为24dp,当API级别高于21时需要,所以如果API低于21,我需要更改上边距。但我不
3回复

以编程方式聚焦编辑文本 (Kotlin)

我有一个createEditText函数,它创建一个EditText并将其添加到视图中。 我的问题是,一旦将其添加到视图中,用户必须点击EditText才能调用键盘并进行编辑。 我想要做的是拥有它,以便一旦创建EditText ,用户就会自动进入编辑模式。 在 IOS 编程中,有一个名为becom
1回复

Kotlin:以编程方式编辑 pdf 或 html

我已经使用 Kotlin 在 Android 中开发了一个应用程序。 我正在从 html 字符串制作 pdf。 pdf(和 html)正在显示这样的对话: 当然,对话的长度未知。 我使用 PdfConverter 并将 html 作为 pdf,这就是重点。 我将带有某些页面对话的pdf作为
1回复

以编程方式设置视图样式 Kotlin

我搜索了很多答案,但没有找到任何可行的解决方案。 我想知道是否有可能以编程方式设置 Edittext 样式。 在我的情况下,我有一个布局,它包含并用于两个不同的地方,并且在包含它的地方旁边需要使用不同的样式。 first_activity.xml 第二个活动.xml custom_l
3回复

kotlin - 以编程方式为视图设置 aplha

我想以编程方式更改我的视图的 alpha 值,它可以通过 xml 轻松设置并且工作正常,该值介于 0 到 1 之间,如果我在 xml 中将其设置为 0.5,则它使我的 xml 布局中的视图半透明。 但是我如何在 kotlin 中设置它? 我试过这段代码,但它根本不起作用: 我也试过用整数设置