drawable 中的 drawable "ic_settings" 在 base drawable 文件夹中没有声明

The drawable "ic_settings" in drawable has no declaration in the base drawable folder

我将矢量资产添加到 wear os 项目中,使用但无法访问它:

ContextCompat.getDrawable(mContext,R.drawable.ic_settings);

它似乎没有找到资产。我有 Drawable 目录并看到其中的资产。我打开 xml 文件,出现错误:

"drawable 中的 drawable 'ic_settings' 在基本 drawable 文件夹或 drawable-densitydpi 文件夹中没有声明;当在不匹配的配置中查询 drawable 时,这可能会导致崩溃这个限定词

我不知道这是什么意思。我只是使用 New -> Vector Asset 菜单添加了它。有人知道如何解决这个问题吗?

这是代码中的一行:

这是 android 工作室中的位置:

当我查看文件时:

此外,我在drawable目录中有一个roundbutton.xml,在另一段代码中被R.drawable引用,并且没有错误。

更新

完成所有检查后(可绘制目录中的资产),我 closed 并重新启动 Android Studio,它识别了它们。你们重新启动。感谢大家的回复。我要 select 帮助 most 的那个作为答案。

问题是您的资产是特定于特定配置的,因此如果配置与设备设置不匹配,则无法通过资源找到可绘制对象,从而导致崩溃。

一些变体是:

- drawable (base, if not found in any folder)
- drawable-ldpi (low-resolution devices will look into it)
- drawable-mdpi (medium-resolution devices will look into it)
- drawable-v24 (devices with API level v24 or v24+ will look into it)

更多信息,您可以查看:https://developer.android.com/training/multiscreen/screendensities

修复它:

  1. 转到Androidwindow并展开app > res > drawable,找到可绘制对象,并在其上 right-click 。从菜单转到 Refactor > Move File...

  2. 从文本编辑框中删除单词“drawable”之后的子字符串(在图像中您可以看到“-xxxhdpi" 在我们应该删除的可绘制单词之后)并按 Refactor。

现在,你可以开始了。

这在另一个文件的类似情况下帮助了我。 我重新做了很多工作来修复这个错误。在 IDE 编辑器中删除了文件的全部内容。重新输入并重新检查整个项目的内容大概 10 次。没有任何帮助。这看起来很神秘。 问题是这样解决的: 我删除了 ic_launcher_background.xml 文件。不安全。 并创造了一个新的。然后我再次输入了整个文本。 一切都变好了。

可能是文件中的一些隐藏控制字符干扰了。我不能再重蹈覆辙了。