"Field can be converted to a local variable" 设置 Android ActionBar 颜色时出现的消息
"Field can be converted to a local variable" message appearing when setting Android ActionBar colour
设置操作栏的颜色后,private String actionBarColor = "#B36305";
中的 actionBarColor
突出显示为黄色,并且由于某种原因返回警告。如何消除此警告?
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)));
}
}
}
警告告诉你的是 actionBarColor
不应该是全局变量(即字段),因为它只在一个方法中使用 (onCreate
)。这是个好建议:您应该始终最小化变量的范围,因为它提高了可读性并减少了编程错误的可能性。
要消除警告,通过在 onCreate
:
中声明变量来解决问题
final String actionBarColor = "#B36305";
if(actionBar != null) {
actionBar.setBackgroundDrawable(
new ColorDrawable(Color.parseColor(actionBarColor)));
}
这不是错误,当您进入 lint 错误时会警告,而不是在用作局部变量的 class 级别变量中显示。去把它定义为一个局部变量。它会起作用
例如-
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 方法中声明。这将解决您的错误。
希望对您有所帮助。
如果您知道自己将使用变量,请添加到 class 的顶部:
@SuppressWarnings("FieldCanBeLocal")
设置操作栏的颜色后,private String actionBarColor = "#B36305";
中的 actionBarColor
突出显示为黄色,并且由于某种原因返回警告。如何消除此警告?
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)));
}
}
}
警告告诉你的是 actionBarColor
不应该是全局变量(即字段),因为它只在一个方法中使用 (onCreate
)。这是个好建议:您应该始终最小化变量的范围,因为它提高了可读性并减少了编程错误的可能性。
要消除警告,通过在 onCreate
:
final String actionBarColor = "#B36305";
if(actionBar != null) {
actionBar.setBackgroundDrawable(
new ColorDrawable(Color.parseColor(actionBarColor)));
}
这不是错误,当您进入 lint 错误时会警告,而不是在用作局部变量的 class 级别变量中显示。去把它定义为一个局部变量。它会起作用
例如-
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 方法中声明。这将解决您的错误。
希望对您有所帮助。
如果您知道自己将使用变量,请添加到 class 的顶部:
@SuppressWarnings("FieldCanBeLocal")