アクションバーの色を設定すると、private String actionBarColor = "#B36305";
のactionBarColor
が黄色で強調表示され、何らかの理由で警告が返されます。この警告を取り除くために何ができますか?
フィールドはローカル変数に変換できます
public class MainActivity extends AppCompatActivity {
private String actionBarColor = "#B36305";
private int getFactorColor(int color, float factor) {
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[2] *= factor;
color = Color.HSVToColor(hsv);
return color;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_activity_main);
ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
}
}
}
警告が伝えているのは、actionBarColor
はグローバル変数(フィールドなど)であってはならないということです。1つのメソッド(onCreate
)でのみ使用されるためです。これは良いアドバイスです。読みやすさを改善し、プログラミングエラーの可能性を減らすため、変数のスコープを常に最小化する必要があります。
警告を取り除くには、onCreate
内の変数を宣言して問題を修正します。
final String actionBarColor = "#B36305";
if(actionBar != null) {
actionBar.setBackgroundDrawable(
new ColorDrawable(Color.parseColor(actionBarColor)));
}
変数を使用することがわかっている場合は、クラスの先頭に追加します。
@SuppressWarnings("FieldCanBeLocal")