尝试更改颜色时 Resources$NotFoundException

Tuh*_*hra 1 android android-resources

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

snackbarView.setBackgroundColor(ContextCompat.getColor(context, Color.RED));
Run Code Online (Sandbox Code Playgroud)

我得到这样的东西:

android.content.res.Resources$NotFoundException: Resource ID #0xffff0000
Run Code Online (Sandbox Code Playgroud)

哪里肯定

0xffff0000

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

Far*_*nob 6

用: snackbarView.setBackgroundColor(Color.RED);

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

原因:

查看官方 android 开发者网站它说它需要一个颜色 ID。

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

如果要使用它,请使用有效的资源 ID,而不是颜色 ID作为 getColor 方法的第二个参数。因为从官网说,

在此处输入图片说明

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

  • 虽然此代码可能会回答问题,但提供有关_how_ 和/或 _why_ 的其他 [上下文](https://meta.stackexchange.com/q/114762) 可以解决问题,这将提高答案的长期价值。请记住,您是在为未来的读者回答问题,而不仅仅是现在问的人!请[编辑](http://stackoverflow.com/posts/43248434/edit) 您的答案以添加解释,并说明适用的限制和假设。提及为什么这个答案比其他答案更合适也没有什么坏处。 (2认同)

Raj*_*ari 5

尝试这个 :-

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

<color name="red">#FF0000</color>
Run Code Online (Sandbox Code Playgroud)

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

snackbarView.setBackgroundColor(ContextCompat.getColor(context,R.color.red));
Run Code Online (Sandbox Code Playgroud)