1. ホーム
  2. java

[解決済み] Android ActionBarの色設定時に「フィールドはローカル変数に変換できます」というメッセージが表示される。

2022-01-28 20:26:38

質問

アクションバーの色を設定した後。 actionBarColorprivate String actionBarColor = "#B36305"; が黄色くハイライトされ、なぜか警告が返されます。この警告をなくすにはどうしたらよいでしょうか。

フィールドはローカル変数に変換することができます

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)));
}