2016-06-24 9 views
3
int color = (colorString != null) ? 
       someIntReturningMethod(colorString) : 
       ContextCompat.getColor(c, R.color.defaultForWhatever); 
notificationBuilder.setColor(color); 

「ここではリソースIDの代わりに解決済みの色を渡す必要があります」というメッセージが表示されます。Android lintエラー?:条件付き演算子演算子

?:を削除し、いずれかの色として定義したままにすると、Lintに問題はありません。

有用な警告を抑制することなくこれを修正できますか?そうでない場合は、どちらを抑止しますか?

特にこの問題のアドホックな解決策はありません。私は約尋ねている?:混乱している糸くず。

[編集]したがって、 "?:confusing Lint"の解決法はありませんか?次のように

+0

使用を抑圧を投げる –

+0

@colorresにメソッドに注釈を付けることもできます –

+1

警告にカーソルを置きます。 Alt + Enterを押すと、ソリューションを含むさまざまなオプションが表示され、警告が表示されなくなります。 – Joshua

答えて

1

あなたは糸くずので、そのメソッドに注釈を付けること@ColorIntアノテーションを使用することができます文句を言わないだけで、その文のために警告する警告

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)

+0

"解決された色"と "リソースID"の両方がintです。 ANdはい、それはARGBです。 – kaay