-2

我有一个名为 Player 的类。这个类中存储了一些玩家对象,每个对象都有一个“名称”、“分数”和“颜色”。我做了一个方法,应该根据我正在处理的对象设置 TextView 颜色。这是代码:

public void setTextViewColor(TextView tw, String playerColor){

    Log.i("TAG", playerColor);

    if (playerColor == "BLACK")
    {
        tw.setTextColor(Color.BLACK);
        Log.i("TAG", "tw color now black");
    }
    else if (playerColor == "BLUE")
    {
        tw.setTextColor(Color.BLUE);
        Log.i("TAG", "tw color now blue");
    }
    else if (playerColor == "CYAN")
    {
        tw.setTextColor(Color.CYAN);
    }
    else if (playerColor == "DKGRAY")
    {
        tw.setTextColor(Color.DKGRAY);
    }
    else if (playerColor == "GRAY")
    {
        tw.setTextColor(Color.GRAY);
    }
    else if (playerColor == "GREEN")
    {
        tw.setTextColor(Color.GREEN);
    }
    else if (playerColor == "LTGRAY")
    {
        tw.setTextColor(Color.LTGRAY);
    }
    else if (playerColor == "MAGENTA")
    {
        tw.setTextColor(Color.MAGENTA);
    }
    else if (playerColor == "RED")
    {
        tw.setTextColor(Color.RED);
    }
    else if (playerColor == "YELLOW")
    {
        tw.setTextColor(Color.YELLOW);
    }
}

现在的问题是 IF 或 ELSE 语句永远无法执行。这就是我调用该方法的方式:

setTextViewColor(newTextView, newPlayer.color);

该方法应该有效,因为每次执行它时,我都可以看到 logcat 消息说明颜色(颜色始终正确)。但我从未看到“tw color now black”或“tw color now blue”消息,所以我很确定 IF 语句有问题。

如果标签显示 playerColor 是“BLACK”,那么应该执行第一个 if 语句,对吗?但事实并非如此。

4

1 回答 1

1

您必须使用.equals()

if(playerColor.equals("BLACK"))

正如用户 gunar 提到的,这更安全(因为 playerColor 可能为空):

"BLACK".equals(playerColor)
于 2013-09-01T15:06:03.490 回答