“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)));
}
}
}
java android android-actionbar android-support-library appcompat
add a comment |
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)));
}
}
}
java android android-actionbar android-support-library appcompat
1
what is the significance of this warning? I mean how problematic can it be from performance or memory use aspect , if left unhandled..?
– eRaisedToX
Apr 18 '17 at 6:12
add a comment |
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)));
}
}
}
java android android-actionbar android-support-library appcompat
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)));
}
}
}
java android android-actionbar android-support-library appcompat
java android android-actionbar android-support-library appcompat
edited Nov 13 '18 at 22:05
MacaronLover
asked Jul 29 '15 at 23:51
MacaronLoverMacaronLover
1,97032657
1,97032657
1
what is the significance of this warning? I mean how problematic can it be from performance or memory use aspect , if left unhandled..?
– eRaisedToX
Apr 18 '17 at 6:12
add a comment |
1
what is the significance of this warning? I mean how problematic can it be from performance or memory use aspect , if left unhandled..?
– eRaisedToX
Apr 18 '17 at 6:12
1
1
what is the significance of this warning? I mean how problematic can it be from performance or memory use aspect , if left unhandled..?
– eRaisedToX
Apr 18 '17 at 6:12
what is the significance of this warning? I mean how problematic can it be from performance or memory use aspect , if left unhandled..?
– eRaisedToX
Apr 18 '17 at 6:12
add a comment |
3 Answers
3
active
oldest
votes
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)));
}
1
How about constants? I like to declare them at the top of my class.
– Trace
Nov 11 '18 at 13:08
@Trace, yes, you can declare them on the class-level (private|public static final String
), and doing so you shouldn't see this warning.
– Mick Mnemonic
Nov 11 '18 at 17:20
I still get the warning. I'll just ignore it for this use case thanks.
– Trace
Nov 11 '18 at 18:14
add a comment |
If you know you will use the variable(s), add to the top of your class:
@SuppressWarnings("FieldCanBeLocal")
3
this is what i needed. I have a field. it could have been converted to a local variable, but it was used inside of a loop and i didn't want to re-initialize it over and over every time the loop executed
– yarell
May 11 '17 at 16:17
2
Just a note, this is often needed if your field is added to an object that manages its containees using weak references. If you convert to a local variable it will be garbage collected.
– William
Feb 16 '18 at 19:27
add a comment |
This is not a error this is waring when you go in the lint errors than it will show in class level variable which used as a local variable. Go and just define it as a local variable. It will Works
For example -
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);
}
we use mtracker variable as a local so we have to declare in oncreate method. This will resolve your error.
Hope this will help you.
1
But you haven't declared it in onCreate...
– barry
Aug 9 '16 at 8:43
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f31713073%2ffield-can-be-converted-to-a-local-variable-message-appearing-when-setting-andr%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
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)));
}
1
How about constants? I like to declare them at the top of my class.
– Trace
Nov 11 '18 at 13:08
@Trace, yes, you can declare them on the class-level (private|public static final String
), and doing so you shouldn't see this warning.
– Mick Mnemonic
Nov 11 '18 at 17:20
I still get the warning. I'll just ignore it for this use case thanks.
– Trace
Nov 11 '18 at 18:14
add a comment |
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)));
}
1
How about constants? I like to declare them at the top of my class.
– Trace
Nov 11 '18 at 13:08
@Trace, yes, you can declare them on the class-level (private|public static final String
), and doing so you shouldn't see this warning.
– Mick Mnemonic
Nov 11 '18 at 17:20
I still get the warning. I'll just ignore it for this use case thanks.
– Trace
Nov 11 '18 at 18:14
add a comment |
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)));
}
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)));
}
answered Jul 30 '15 at 0:02
Mick MnemonicMick Mnemonic
6,47921924
6,47921924
1
How about constants? I like to declare them at the top of my class.
– Trace
Nov 11 '18 at 13:08
@Trace, yes, you can declare them on the class-level (private|public static final String
), and doing so you shouldn't see this warning.
– Mick Mnemonic
Nov 11 '18 at 17:20
I still get the warning. I'll just ignore it for this use case thanks.
– Trace
Nov 11 '18 at 18:14
add a comment |
1
How about constants? I like to declare them at the top of my class.
– Trace
Nov 11 '18 at 13:08
@Trace, yes, you can declare them on the class-level (private|public static final String
), and doing so you shouldn't see this warning.
– Mick Mnemonic
Nov 11 '18 at 17:20
I still get the warning. I'll just ignore it for this use case thanks.
– Trace
Nov 11 '18 at 18:14
1
1
How about constants? I like to declare them at the top of my class.
– Trace
Nov 11 '18 at 13:08
How about constants? I like to declare them at the top of my class.
– Trace
Nov 11 '18 at 13:08
@Trace, yes, you can declare them on the class-level (
private|public static final String
), and doing so you shouldn't see this warning.– Mick Mnemonic
Nov 11 '18 at 17:20
@Trace, yes, you can declare them on the class-level (
private|public static final String
), and doing so you shouldn't see this warning.– Mick Mnemonic
Nov 11 '18 at 17:20
I still get the warning. I'll just ignore it for this use case thanks.
– Trace
Nov 11 '18 at 18:14
I still get the warning. I'll just ignore it for this use case thanks.
– Trace
Nov 11 '18 at 18:14
add a comment |
If you know you will use the variable(s), add to the top of your class:
@SuppressWarnings("FieldCanBeLocal")
3
this is what i needed. I have a field. it could have been converted to a local variable, but it was used inside of a loop and i didn't want to re-initialize it over and over every time the loop executed
– yarell
May 11 '17 at 16:17
2
Just a note, this is often needed if your field is added to an object that manages its containees using weak references. If you convert to a local variable it will be garbage collected.
– William
Feb 16 '18 at 19:27
add a comment |
If you know you will use the variable(s), add to the top of your class:
@SuppressWarnings("FieldCanBeLocal")
3
this is what i needed. I have a field. it could have been converted to a local variable, but it was used inside of a loop and i didn't want to re-initialize it over and over every time the loop executed
– yarell
May 11 '17 at 16:17
2
Just a note, this is often needed if your field is added to an object that manages its containees using weak references. If you convert to a local variable it will be garbage collected.
– William
Feb 16 '18 at 19:27
add a comment |
If you know you will use the variable(s), add to the top of your class:
@SuppressWarnings("FieldCanBeLocal")
If you know you will use the variable(s), add to the top of your class:
@SuppressWarnings("FieldCanBeLocal")
answered Sep 26 '16 at 15:16
iOSAndroidWindowsMobileAppsDeviOSAndroidWindowsMobileAppsDev
1,8741726
1,8741726
3
this is what i needed. I have a field. it could have been converted to a local variable, but it was used inside of a loop and i didn't want to re-initialize it over and over every time the loop executed
– yarell
May 11 '17 at 16:17
2
Just a note, this is often needed if your field is added to an object that manages its containees using weak references. If you convert to a local variable it will be garbage collected.
– William
Feb 16 '18 at 19:27
add a comment |
3
this is what i needed. I have a field. it could have been converted to a local variable, but it was used inside of a loop and i didn't want to re-initialize it over and over every time the loop executed
– yarell
May 11 '17 at 16:17
2
Just a note, this is often needed if your field is added to an object that manages its containees using weak references. If you convert to a local variable it will be garbage collected.
– William
Feb 16 '18 at 19:27
3
3
this is what i needed. I have a field. it could have been converted to a local variable, but it was used inside of a loop and i didn't want to re-initialize it over and over every time the loop executed
– yarell
May 11 '17 at 16:17
this is what i needed. I have a field. it could have been converted to a local variable, but it was used inside of a loop and i didn't want to re-initialize it over and over every time the loop executed
– yarell
May 11 '17 at 16:17
2
2
Just a note, this is often needed if your field is added to an object that manages its containees using weak references. If you convert to a local variable it will be garbage collected.
– William
Feb 16 '18 at 19:27
Just a note, this is often needed if your field is added to an object that manages its containees using weak references. If you convert to a local variable it will be garbage collected.
– William
Feb 16 '18 at 19:27
add a comment |
This is not a error this is waring when you go in the lint errors than it will show in class level variable which used as a local variable. Go and just define it as a local variable. It will Works
For example -
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);
}
we use mtracker variable as a local so we have to declare in oncreate method. This will resolve your error.
Hope this will help you.
1
But you haven't declared it in onCreate...
– barry
Aug 9 '16 at 8:43
add a comment |
This is not a error this is waring when you go in the lint errors than it will show in class level variable which used as a local variable. Go and just define it as a local variable. It will Works
For example -
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);
}
we use mtracker variable as a local so we have to declare in oncreate method. This will resolve your error.
Hope this will help you.
1
But you haven't declared it in onCreate...
– barry
Aug 9 '16 at 8:43
add a comment |
This is not a error this is waring when you go in the lint errors than it will show in class level variable which used as a local variable. Go and just define it as a local variable. It will Works
For example -
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);
}
we use mtracker variable as a local so we have to declare in oncreate method. This will resolve your error.
Hope this will help you.
This is not a error this is waring when you go in the lint errors than it will show in class level variable which used as a local variable. Go and just define it as a local variable. It will Works
For example -
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);
}
we use mtracker variable as a local so we have to declare in oncreate method. This will resolve your error.
Hope this will help you.
answered May 5 '16 at 10:36
Anurag MishraAnurag Mishra
332
332
1
But you haven't declared it in onCreate...
– barry
Aug 9 '16 at 8:43
add a comment |
1
But you haven't declared it in onCreate...
– barry
Aug 9 '16 at 8:43
1
1
But you haven't declared it in onCreate...
– barry
Aug 9 '16 at 8:43
But you haven't declared it in onCreate...
– barry
Aug 9 '16 at 8:43
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f31713073%2ffield-can-be-converted-to-a-local-variable-message-appearing-when-setting-andr%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
what is the significance of this warning? I mean how problematic can it be from performance or memory use aspect , if left unhandled..?
– eRaisedToX
Apr 18 '17 at 6:12