Android Vector drawable在回收器视图上崩溃,但在活动上工作良好

Android Vector drawable在回收器视图上崩溃,但在活动上工作良好,android,android-layout,android-fragments,androidx,android-vectordrawable,Android,Android Layout,Android Fragments,Androidx,Android Vectordrawable,我在我的应用程序中添加了vector drawable,它在活动中运行良好 ivTeam.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_home_team)) 但当我从片段中的recycler适配器执行相同的代码时,它崩溃并给出以下错误消息 android.content.res.Resources$NotFoundException:文件 res/drawable/test.xml来自可绘制资源ID#0x7f122

我在我的应用程序中添加了vector drawable,它在活动中运行良好

ivTeam.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_home_team))
但当我从片段中的recycler适配器执行相同的代码时,它崩溃并给出以下错误消息

android.content.res.Resources$NotFoundException:文件 res/drawable/test.xml来自可绘制资源ID#0x7f122e

我正在将活动引用传递给适配器,并尝试遵循静态块

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
但这里似乎什么都不起作用,我在androidX上,并在我的gradle文件中添加了以下内容

    vectorDrawables.useSupportLibrary = true
渐变版本:

    classpath 'com.android.tools.build:gradle:3.4.1'        

如果您确实在使用Android X,我怀疑您可能没有正确加载矢量绘图

我很快就读到了你的问题,其中指出:

使用AndroidX加载

加载drawables时,您需要使用AndroidX提供后端口向量支持的方法。其入口点是始终使用AppCompatResources.getDrawable加载Drawable。虽然有许多方法可以加载可绘制文件(因为某些原因),但如果要使用兼容向量,则必须使用AppCompatResources。如果您未能做到这一点,那么您将无法挂接到AndroidX代码路径,并且您的应用程序在尝试使用您运行的平台不支持的任何功能时可能会崩溃

从代码中可以看出,您使用的是ContextCompat.getDrawable,而不是AppCompatResources.getDrawable


使用AppCompatResources.getDrawable应该可以纠正您的问题

您的drawable资源文件夹中是否有test.xml?如果是,它是一个有效的向量可绘制吗?@MichaelDovoh:是的,它是一个向量可绘制,它在
drawable
folder中,你能告诉我你在你的adapter@dev90尝试使用
setImageResource()
而不是
setImageDrawable()
设置
drawable
<代码>ivTeam.setImageResource(R.drawable.ic\u home\u团队)