2013-09-01 3 views
-2

У меня есть класс с именем 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 выполняется, верно? Но это не так.

+0

вы должны использовать 'равных)' метода (. – Sajmon

+0

Спасибо, работает как шарм! Я не могу поверить, что сделал такую ​​глупую ошибку, мне хорошо известно, что вам нужно сравнивать строки с equals(). – Guy

+0

Если вы используете Java 7, вы также можете использовать переключатель. Тем не менее, похоже, что вы просто переводите, то есть вам нужно просто использовать «карту». –

ответ

1

Вы должны использовать .equals():

if(playerColor.equals("BLACK")) 

Как уже упоминалось пользователь Гунар, это безопаснее (потому что playerColor может быть пустым):

"BLACK".equals(playerColor) 
+0

Это уже рассмотрено в дублированном вопросе. Вместо того, чтобы переставлять ответ, голосуйте этот вопрос как дубликат. – Makoto

+3

'" BLACK ".equals (playerColor)' более безопасен, так как 'playerColor' может быть нулевым. – gunar

+0

@gunar хорошо пункт. –

Смежные вопросы