【问题标题】:Resources$NotFoundException while trying to change color尝试更改颜色时的 Resources$NotFoundException
【发布时间】:2017-09-01 01:49:40
【问题描述】:

我正在尝试更改我的小吃店的颜色

snackbarView.setBackgroundColor(ContextCompat.getColor(context, Color.RED));

我得到了这样的东西:

android.content.res.Resources$NotFoundException: Resource ID #0xffff0000

肯定在哪里

0xffff0000

代表RED。但是为什么找不到这个资源呢? 有什么帮助吗?

【问题讨论】:

  • Color.RED 是实际的颜色值,而不是资源名称。如果你想要Color.RED,直接用就行了——setBackgroundColor(Color.RED)
  • 完成,谢谢@MikeM。其实我很困惑,因为他们在这里提出了一个问题:stackoverflow.com/questions/34020891/…
  • R.color 开头的任何内容都是项目中颜色资源的资源名称,对于那些您将使用ContextCompat.getColor() 来获取实际值的内容。然而,Color 类有几个常量——例如,Color.REDColor.BLUE 等——它们是实际的颜色值。你不需要从你的资源中提取这些。
  • @TuhinSubhra 试试我的答案,它工作正常..:)
  • @RajshreeTiwari,没错,它的工作。谢谢。

标签: android android-resources


【解决方案1】:

使用:snackbarView.setBackgroundColor(Color.RED);

不是:snackbarView.setBackgroundColor(ContextCompat.getColor(context, Color.RED));

原因:

查看official android developer site

因此,您可以直接为其添加颜色。无需添加 ContextCompat.getColor() 方法。

如果你想使用这个,请使用一个有效的资源id,而不是颜色id作为getColor方法的第二个参数。 因为来自official website 它说,

它需要资源 ID,而不是颜色 ID。 希望,现在,你能明白这件事了。

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关 如何 和/或 为什么 解决问题的附加 context 将改善答案的长度长期价值。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。提及为什么这个答案比其他答案更合适也没有什么坏处。
  • 谢谢。我会提供的。
【解决方案2】:

试试这个:-

在您的 values.xml 中,创建 colors.xml 并添加以下行:

<color name="red">#FF0000</color>

然后像这样调用这个颜色:-

snackbarView.setBackgroundColor(ContextCompat.getColor(context,R.color.red));

【讨论】:

    【解决方案3】:

    你得到了

    Resources$NotFoundException:资源 ID #0xffff0000

    无法找到请求的资源时,资源 API 会引发此异常。

    创建自定义 colors.xml 保存颜色。

    res/values/colors.xml:

    <?xml version="1.0" encoding="utf-8"?>
     <resources>
     <color name="red">#ff0000 </color>
     
    </resources> 
    

    那么

    setBackgroundColor(ContextCompat.getColor(context, R.color.red));
    

    或简单

     setBackgroundColor(Color.parseColor("#ff0000"));
    

    【讨论】:

      【解决方案4】:

      尝试像这样设置背景颜色:

      snackbarView.setBackgroundColor(ContextCompat.getColor(context, R.color.RED));
      

      【讨论】:

        【解决方案5】:

        Color.RED 是一种颜色而不是 ID。你应该这样做:

        snackbarView.setBackgroundColor(Color.RED);

        【讨论】:

          【解决方案6】:

          您将 Color.RED(一个 int 值)视为 resourceId。逻辑错误! 只需使用 Color.RED insted。 snackbarView.setBackgroundColor(Color.RED)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-05
            • 2021-01-06
            • 2020-02-22
            • 1970-01-01
            相关资源
            最近更新 更多