我在随机更改背景颜色时遇到问题:
首先,我尝试在Colorclass中使用parseColor:
public class Colors {
public String[] colors = {
"#39add1", // light blue
"#3079ab", // dark blue
"#c25975" // mauve
};
public int getcolor() {
Random randomGenerator = new Random();
String color = "";
int randomNumber = randomGenerator.nextInt(3);
color = colors[randomNumber];
int colorAsInt = Color.parseColor(color);
return colorAsInt;
}
}
在Activity类中:
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
int color = mColors.getcolor();
relativeLayout.setBackgroundColor(color);
}
};
完美无缺:
但是当我尝试将String用于返回类型的getcolor并在活动类中使用parse int时,当我运行应用程序时它会给我一个错误:不幸的是应用程序已经停止。
颜色类:
public String getcolor() {
Random randomGenerator = new Random();
String color = "";
int randomNumber = randomGenerator.nextInt(3);
color = colors[randomNumber];
return color;
}
活动类:
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
String color = mColors.getcolor();
relativeLayout.setBackgroundColor(Integer.parseInt(color));
}
};
为什么会出现这个问题?
答案 0 :(得分:3)
Integer.parseInt(color)
无法解析字符串,因为它不是整数字符串"#39add1"
您必须像第一个函数一样使用Color.parseColor(color)
。
relativeLayout.setBackgroundColor(Color.parseColor(color));
答案 1 :(得分:0)
将颜色定义更改为
public int[] colors = {
0x39add1, // light blue
0x3079ab, // dark blue
0xc25975 // mauve
};
并使用
setBackgroundColor(colors[0]);