【问题标题】:The drawable "ic_settings" in drawable has no declaration in the base drawable folderdrawable 中的可绘制“ic_settings”在基本可绘制文件夹中没有声明
【发布时间】:2021-05-31 15:14:57
【问题描述】:

我使用以下方式将矢量资产添加到磨损操作系统项目中,但无法访问它:

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

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

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

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

这是代码中的一行:

这是它在 android studio 中的位置:

当我查看文件时:

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

更新

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

【问题讨论】:

  • 放入drawable文件夹。
  • 它在drawable文件夹中。

标签: android wear-os


【解决方案1】:

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

一些变体是:

- 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. 转到 Android 窗口并展开 app > res > drawable,找到可绘制对象,然后右键单击它。从菜单转到 重构 > 移动文件...

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

现在,你可以走了。

【讨论】:

  • 已经在drawable目录下。当我点击重构时,会出现:'.../src/main/res/drawable' 所以当我尝试保存它时,我会收到一条消息,它已经存在。
【解决方案2】:

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

可能是文件中的某些隐藏控制字符受到干扰。我不能再重复这种情况了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2022-12-23
    • 2013-05-10
    • 1970-01-01
    • 2015-07-23
    相关资源
    最近更新 更多