API级别23中的getColor错误

时间:2015-08-21 10:31:18

标签: android

getResources().getColor(R.color.color_name)现已在API Level 23中弃用,但可以通过添加Color Theme作为第二个参数来实现,例如

getResources().getColor(R.color.color_name, Theme)
根据新文档,但当我传递主题的空值,如

getResources().getColor(R.color.color_name, null)
我的应用程序崩溃了。也许我在理解中遗漏了一些东西。请提前帮助,而不是。

4 个答案:

答案 0 :(得分:49)

从API 23开始不推荐使用旧方法,新方法仅存在于API 23+中。您正在尝试在运行API< 23。

的设备上调用新方法

您可以执行API级别检查并调用相应的方法,也可以使用support-v4库中的ContextCompat.getColor(Context, int)

答案 1 :(得分:6)

试试这个..

int color = Color.parseColor(getResources().getString(R.color.color_name));

而不是

int color = getResources().getColor(R.color.color_name);

答案 2 :(得分:2)

如上所述[{3}},您可以按如下方式使用here

char buffer[100];
int buffer_full;

// write interesting data to the buffer. does not read.
void fill_buffer(char* buffer, size_t buffsz);
// read the interesting data in the buffer. does not write.
void use_buffer(const char* buffer, size_t buffsz);

void writer_thread()
{
    if (!buffer_full) {
        fill_buffer(buffer, sizeof(buffer));
        // is a memory barrier needed here?
        buffer_full = 1;
    }
}

void reader_thread()
{
    if (buffer_full) {
        use_buffer(buffer, sizeof(buffer));
        // is a memory barrier needed here?
        buffer_full = 0;
    }
}

答案 3 :(得分:0)

您可以使用它来设置适配器类的颜色

View view=super.getView(position,convertView,parent);
view.setBackgroundColor(ContextCompat.getColor(context, R.color.blue_100));