wake-up-neo.com

Die Meldung "Das Feld kann in eine lokale Variable konvertiert werden" wird angezeigt, wenn die Android ActionBar-Farbe eingestellt wird

Nachdem Sie die Farbe der Aktionsleiste festgelegt haben, wird actionBarColor in private String actionBarColor = "#B36305"; wird gelb hervorgehoben und aus irgendeinem Grund eine Warnung zurückgegeben. Was kann getan werden, um diese Warnung loszuwerden?

Das Feld kann in eine lokale Variable konvertiert werden

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

Die Warnung besagt, dass actionBarColor keine globale Variable sein sollte (d. H. Ein Feld), da es nur in einer Methode verwendet wird (onCreate). Dies ist ein guter Rat: Sie sollten den Umfang Ihrer Variablen immer minimieren, da dies die Lesbarkeit verbessert und die Möglichkeit von Programmierfehlern verringert.

Um die Warnung zu beseitigen, beheben Sie das Problem, indem Sie die Variable in onCreate deklarieren:

final String actionBarColor = "#B36305";

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

Wenn Sie wissen, dass Sie die Variable (n) verwenden werden, fügen Sie am Anfang Ihrer Klasse Folgendes hinzu:

@SuppressWarnings("FieldCanBeLocal")