Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Field can be converted to a local variable" message appearing when setting Android ActionBar colour

After setting the colour of the Action Bar, actionBarColor in private String actionBarColor = "#B36305"; gets highlighted yellow and a warning is returned for some reason. What can be done to get rid of this warning?

Field can be converted to a local variable

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)));         }     } } 
like image 762
wbk727 Avatar asked Jul 29 '15 23:07

wbk727


2 Answers

If you know you will use the variable(s), add to the top of your class:

@SuppressWarnings("FieldCanBeLocal")

like image 179
iOSAndroidWindowsMobileAppsDev Avatar answered Oct 05 '22 03:10

iOSAndroidWindowsMobileAppsDev


What the warning is telling you is that actionBarColor shouldn't be a global variable (i.e. a field), because it's only used in one method (onCreate). This is good advice: you should always minimize the scope of your variables, because it improves readability and reduces possibilities for programming errors.

To get rid of the warning, fix the problem by declaring the variable within onCreate:

final String actionBarColor = "#B36305";  if(actionBar != null) {     actionBar.setBackgroundDrawable(         new ColorDrawable(Color.parseColor(actionBarColor))); } 
like image 26
Mick Mnemonic Avatar answered Oct 05 '22 02:10

Mick Mnemonic