У меня есть OnClickListener, который, насколько я понимаю, должен запускать метод с именем changeTitleToYellow, который изменяет текстовое представление на желтый фон и изменяет текст.
Мой onClickListener выглядит следующим образом:
relayButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeTitleToYellow();
System.out.println(tvSocketConnection.getText().toString());
if (relayStatusArray[relayNumber] == 0)
{
if (cPanel.TurnOnRelay(relayNumber, 1) == false)
{
changeTitleToRed();
}else{
changeTitleToGreen();
}
}
else {
if (cPanel.TurnOffRelay(relayNumber, 1) == false){
changeTitleToRed();
}else{
changeTitleToGreen();
}
}
relayStatusArray = cPanel.getBankStatus(1);
updateButtonText();
}
});
Метод changeTitleToYellow запускается и завершается, и он продолжается вплоть до операторов if, которые вызывают методы в другом классе с AsyncTask в нем. Однако название никогда не становится желтым. Код выполняется, но изменения пользовательского интерфейса вступают в силу только после завершения AsyncTask.
Я проверил, и метод changeTitleToYellow выполняется в потоке пользовательского интерфейса, так что это не так.
Я почти уверен, что именно так работает Android, но кто-нибудь знает, почему он будет запускать код, а не изменять интерфейс?
редактировать
Вот как изменить заголовок Методы:
public void changeTitleToYellow(){
System.out.println("In Change Title Yellow Method");
tvSocketConnection.setBackgroundColor(Color.YELLOW);
tvSocketConnection.setText("NCD TCP Relay: Connecting....");
System.out.println("Endof Yellow");
}