Android?lint错误与?:条件运算符运算符

时间:2016-06-24 09:23:28

标签: android conditional

int color = (colorString != null) ?
                someIntReturningMethod(colorString) :
                ContextCompat.getColor(c, R.color.defaultForWhatever);
notificationBuilder.setColor(color);

我得到“应该在这里传递已解析的颜色而不是资源ID”。

如果我删除?:并将颜色定义为任何一个,Lint没有问题。

我可以在不抑制任何有用警告的情况下修复此问题吗?如果没有,我会抑制哪一个?

请不要特别针对此问题采取临时解决方案。我问的是什么?:令人困惑的皮棉。

[edit] 那么,一般来说,没有“?:迷惑Lint”的解决方案?

2 个答案:

答案 0 :(得分:1)

您可以使用@ColorInt注释来注释该方法,以便lint不会发出警告

答案 1 :(得分:0)

修改您的代码如下:

int color;
if (colorString != null) {
     color = someIntReturningMethod(colorString);
} else {
    color = R.color.defaultForWhatever;
}
int color = ContextCompat.getColor(c, color);

someIntReturningMethod未返回已解析的Android颜色。可能它只返回res/colors.xml的颜色,必须稍后通过方法解析:
ContextCompat.getColor(Context context, int color)