Player라는 클래스가 있습니다. 이 클래스 안에는 몇 개의 플레이어 개체가 저장되어 있으며 모든 개체에는 "이름", "점수"및 "색"이 있습니다. 내가 처리하고있는 객체에 따라 TextView 색상을 설정해야하는 메소드를 만들었습니다. 코드는 다음과 같습니다.IF 문은 메서드 내에서 절대 실행되지 않습니다.
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);
방법은 내가 그것을 실행할 때마다, 나는 색상 (색상이 항상 정확) 알리는 로그 캣 메시지를 볼 수 있기 때문에 작업 할 예정이다. 하지만 나는 "tw color now black"또는 "tw color now blue"라는 메시지를 보지 못했습니다. 그래서 나는 IF 문에 잘못된 것이 있다는 것을 확신합니다.
태그는 문을 실행하도록되어있는 경우 playerColor를 잘 작성 후, 최초의 "BLACK"입니다 말한다면? 그러나 그렇지 않습니다.
당신이 '등호()'방법을 사용합니다. – Sajmon
감사합니다, 매력처럼 작동합니다! 나는 그 같은 어리석은 실수를했다고 믿을 수 없다. 나는 당신이 문자열을 equals()와 비교해야한다는 것을 잘 알고있다. – Guy
Java 7을 사용하는 경우 스위치를 사용할 수도 있습니다. 즉, 번역하는 것 같아서'Map' 만 사용해야합니다. –