最近、私のコードにリントエラーが表示されました:
ここでリソースIDの代わりに解決された色を渡す必要があります:getResources()。getColor(R.color.maps_list_background_color)
MyClass.Java/myapp/Android/maps line 107 Android Lint Problem
私は答えがエラーにあることを解決する方法を知っています、問題は、彼らがリンターにこのエラーを追加した理由がわからないということです。
整数の形式で色を取るメソッドには、実際の色リソースIDではなく、RGBトリプルを渡す必要があります。 getResources.getColor(resource)を呼び出す必要があります。
呼び出す関数は、色リソースのIDだけでなく、RGBトリプルである整数を予期しています。色リソースIDは依然として整数ですが、RGBトリプルとして使用された場合に期待する色を生成しません。色に適切なRGBトリプルを渡すには、getResources().getColor(R.color.example_color)
呼び出しで解決する必要があります。
私はまだGoogleでこれを見つけており、廃止されているので、これを行う現在の方法を共有したいと思いました。
check getResources()。getColor()は非推奨
ContextCompat.getColor(context, R.color.color_name)
注釈を使用する@ColorInt
これが色参照IDではなく色であることを確認します。
getResources().getColor()
は非推奨であるため、色を取得するにはこれを行う必要があります。
int color = ContextCompat.getColor(getContext(),your_color_id);
これで、現在のコンテキストに対して色が設定されました。次を使用して色を設定します。
your_view.setBackgroundColor(color);
私については、それは非常に愚かな警告です。
私は関数を持つ独自のクラスを持っています:
public static final void setBackgroundColor(View v, int id) {
// Here I get color by id from resources and setBackgroundColor of this color.
}
とにかく、setBackgroundColor
を呼び出そうとすると、警告が表示されます。しかし、なぜ?
それで、私は簡単にしました:setBackgroundColor
の名前をsetBackgroundColorr
に変更します。
関数名で名前color
が見つかった場合、この警告がアクティブになります。
そして、はい、名前setColorBackgroundやその他の名前は好きではありません:-)