У меня есть класс с именем 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);
метод должен работать, потому что каждый раз, когда я исполняю, я могу увидеть сообщение о том, LogCat цвета (цвет всегда правильно). Но я никогда не вижу «tw color now black» или «tw color now blue», поэтому я уверен, что что-то не так с IF-заявлением.
Если тег говорит, что playerColor является «ЧЕРНОМ», то предполагается, что первая операция if выполняется, верно? Но это не так.
вы должны использовать 'равных)' метода (. – Sajmon
Спасибо, работает как шарм! Я не могу поверить, что сделал такую глупую ошибку, мне хорошо известно, что вам нужно сравнивать строки с equals(). – Guy
Если вы используете Java 7, вы также можете использовать переключатель. Тем не менее, похоже, что вы просто переводите, то есть вам нужно просто использовать «карту». –