Изменение пользовательского интерфейса в OnclickListener, который присоединяется к AsyncTask - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть 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");
}
...