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)));
}
}
}
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)));
}
Wenn Sie wissen, dass Sie die Variable (n) verwenden werden, fügen Sie am Anfang Ihrer Klasse Folgendes hinzu:
@SuppressWarnings("FieldCanBeLocal")