int color = (colorString != null) ?
someIntReturningMethod(colorString) :
ContextCompat.getColor(c, R.color.defaultForWhatever);
notificationBuilder.setColor(color);
我得到“应该在这里传递已解析的颜色而不是资源ID”。
如果我删除?:并将颜色定义为任何一个,Lint没有问题。
我可以在不抑制任何有用警告的情况下修复此问题吗?如果没有,我会抑制哪一个?
请不要特别针对此问题采取临时解决方案。我问的是什么?:令人困惑的皮棉。
[edit] 那么,一般来说,没有“?:迷惑Lint”的解决方案?
答案 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)