Android lint错误使用?:条件运算符


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

我得到"这里应该传递已解析的颜色而不是资源id "。

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

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

对于这个问题,请不要有特别的解决方案。我在问关于?:混乱的lint.

[edit]所以,没有解决方案"?"混乱的绒毛",一般来说?

你可以使用@ColorInt annotation来注释这个方法,这样lint就不会抛出一个警告

按如下方式修改代码:

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)

相关内容

  • 没有找到相关文章

最新更新