可绘制的“ic_settings”在基本可绘制文件夹中没有声明

lcj*_*lcj 6 android wear-os

我使用以下方法将矢量资源添加到了 Wear os 项目中,但无法使用以下方式访问它:

ContextCompat.getDrawable(mContext,R.drawable.ic_settings);
Run Code Online (Sandbox Code Playgroud)

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

“drawable 中的可绘制‘ic_settings’在基本可绘制文件夹或可绘制密度dpi 文件夹中没有声明;当在与此限定符不匹配的配置中查询可绘制时,这可能会导致崩溃”

我不懂这啥意思。我刚刚使用“新建”->“矢量资源”菜单添加了它。有人知道如何解决这个问题吗?

这是代码中的行: 在此输入图像描述

这是它在 android studio 中的位置: 在此输入图像描述

当我查看文件时: 在此输入图像描述

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

更新

完成所有检查后(是可绘制目录中的资产),我关闭并重新启动 Android Studio,它识别了它们。重新启动吧。感谢大家的回复。我将选择最有帮助的一个作为答案。

df7*_*899 7

最近看到同样的消息,但原因是文件名中的连字符。我已将文件keyboard_alt-48px.xml直接复制到可绘制目录中:

在此输入图像描述

重命名以删除连字符解决了问题。

作为参考,尝试再次使用文件名中的连字符重命名,然后突出显示为无效资源名称:

在此输入图像描述


Tar*_*Joy 2

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

一些变体是:

- 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)
Run Code Online (Sandbox Code Playgroud)

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

要解决这个问题:

  1. 转到Android窗口并展开app > res > drawable,找到可绘制对象,然后右键单击它。从菜单转到重构 > 移动文件... 在此输入图像描述

  2. 从文本编辑框中删除单词“ drawable ”后面的子字符串(在图像中,您可以在我们应该删除的drawable单词后面 看到“ -xxxhdpi ”),然后按重构。在此输入图像描述

现在,你可以走了。

  • 它已经在drawable目录中了。当我单击重构时,会出现:“.../src/main/res/drawable”,因此当我尝试保存它时,我会收到一条消息,表明它已经存在。 (4认同)