web-dev-qa-db-ja.com

「Android ActionBar color

アクションバーの色を設定すると、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)));
        }
    }
}
29
MacaronLover

警告が伝えているのは、actionBarColorはグローバル変数(フィールドなど)であってはならないということです。1つのメソッド(onCreate)でのみ使用されるためです。これは良いアドバイスです。読みやすさを改善し、プログラミングエラーの可能性を減らすため、変数のスコープを常に最小化する必要があります。

警告を取り除くには、onCreate内の変数を宣言して問題を修正します。

final String actionBarColor = "#B36305";

if(actionBar != null) {
    actionBar.setBackgroundDrawable(
        new ColorDrawable(Color.parseColor(actionBarColor)));
}
32
Mick Mnemonic

変数を使用することがわかっている場合は、クラスの先頭に追加します。

@SuppressWarnings("FieldCanBeLocal")