通过方法调用将rgb颜色值解析为整数

时间:2017-03-25 15:26:36

标签: android

标题说明了一切。

switch (colorChosen) {
    case "Red":
        setEverythingColors(255,0,0,colorChosen);
    case "Brown":
        setEverythingColors(165,42,42,colorChosen);
    case "Orange":
        setEverythingColors(255,165,0,colorChosen);
    case "Blue":
        setEverythingColors(0,0,255,colorChosen);
    case "Green":
        setEverythingColors(0,128,0,colorChosen);
    case "Purple":
        setEverythingColors(128,0,128,colorChosen);
    case "Pink":
        setEverythingColors(246,171,205,colorChosen);
    case "Yellow":
        setEverythingColors(255,255,0,colorChosen);
    case "Grey":
        setEverythingColors(128,128,128,colorChosen);
}

并且setEverythingColors方法就是这个

public void setEverythingColors(int c1, int c2, int c3, String color){
    backgroundColor.setBackgroundColor(Color.rgb(c1,c2,c3));
    colorTitle.setText(color);
}

由于某种原因,构建成功,我没有任何错误或警告,但无论哪种情况,颜色永远不会被设置,我在这里拉头发!

可能是什么情况?

2 个答案:

答案 0 :(得分:1)

switch-case可以工作String如果它是常量,你的代码有效但是你忘记了break和默认值。你可以重试:

switch (colorChosen) {
        case "Red":
            setEverythingColors(255, 0, 0, colorChosen);
            break;
        case "Brown":
            setEverythingColors(165, 42, 42, colorChosen);
            break;
        case "Orange":
            setEverythingColors(255, 165, 0, colorChosen);
            break;
        case "Blue":
            setEverythingColors(0, 0, 255, colorChosen);
            break;
        case "Green":
            setEverythingColors(0, 128, 0, colorChosen);
            break;
        case "Purple":
            setEverythingColors(128, 0, 128, colorChosen);
            break;
        case "Pink":
            setEverythingColors(246, 171, 205, colorChosen);
            break;
        case "Yellow":
            setEverythingColors(255, 255, 0, colorChosen);
            break;
        case "Grey":
            setEverythingColors(128, 128, 128, colorChosen);
            break;
        default:
            break;
    }

答案 1 :(得分:0)

我发现了什么问题。

case "Red":
case "Brown":
etc..

是问题所在。我指的是字符串,就像我引用整数一样。

我不能说colorChosen=="Red",因为它是一个字符串。

我将switch语句更改为if语句并改为使用colorChose.equals("Red"),这解决了问题。