Сообщение" поле может быть преобразовано в локальную переменную " появляется при настройке цвета панели действий
после установки цвета панели действий,actionBarColor
на private 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)));
}
}
}
3 ответов
предупреждение говорит вам, что actionBarColor
не должна быть глобальной переменной (т. е. полем), потому что она используется только в одном методе (onCreate
). Это хороший совет: вы всегда должны минимизировать область своих переменных, потому что это улучшает читаемость и уменьшает возможности ошибок программирования.
чтобы избавиться от предупреждения, исправьте проблему, объявив переменную в onCreate
:
final String actionBarColor = "#B36305";
if(actionBar != null) {
actionBar.setBackgroundDrawable(
new ColorDrawable(Color.parseColor(actionBarColor)));
}
Если вы знаете, что будете использовать переменную(ы), добавьте в начало своего класса:
@SuppressWarnings("FieldCanBeLocal")
Это не ошибка это waring когда вы идете в ошибки корпии, чем это будет отображаться в переменной уровня класса, которая используется в качестве локальной переменной. Пойдите и просто определите его как локальную переменную. Он работает
например
private Tracker mTracker, mTracker2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleAnalytics mInstance = GoogleAnalytics.getInstance(this);
mTracker = mInstance.getDefaultTracker();
mTracker2 = mInstance.getTracker(URL.ANALYTIC);
mInstance.setDefaultTracker(mTracker2);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.actress_about_detail);
}
мы используем переменную mtracker как локальную, поэтому мы должны объявить в методе oncreate. Это решит вашу ошибку.
надеюсь, это поможет вам.