마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

쓰레드에서 ui변경 , 핸들 사용

0 추천
class exeThread extends Thread
{
    int delay, 초;
    TextView txt;

    public exeThread(int delay, TextView txt)
    {
        this.delay = delay;
        this.txt = txt;
    }
   
     @Override // run 재정의
    public void run()
    {   
   Handler 핸들1 = txt.getHandler();  
   핸들1.post(new Runnable() {
    @Override
   public void run(){
     txt.setText("5");
     while (true)
              {
               초 = Integer.parseInt(txt.getText().toString());
               if (초 <= 5 && 초 >= 0) 초 = 초 - 1;
               else if (초 < 0) 초 = 5;
                  txt.setText(초);
                 try {
     Thread.sleep(delay);
                   } catch (InterruptedException e) {
      e.printStackTrace();
                   }
              }
    }
 
   });
    }
}

 

 

 

class MainActivi extends Activity {

 버턴3.setOnClickListener(new View.OnClickListener()
 {   
   public void onClick(View v)
   {

 Thread obj1 = new exeThread(1000, 에디트텍스트1);
    obj1.start();
 }

}

 

 

두 개의 서로 다른 클래스에서, 쓰레드 만들고 상대쪽  ui  접근하려고 핸들 구현하였는데요.

실행시 에러는 없는데요. 숫자 5가 나와야 하는데요. 아무런 변화가 없습니다.

저 핸들로 구현한 문법이 타이머에서는 정상 작동했거든요.

그 형식 그대로 갔다가 썼는데요. 아무 작동도 안 하네요.

뭐가 빠져서 안되나요?
익명사용자 님이 2015년 10월 25일 질문

1개의 답변

0 추천
UI작업은 메인쓰레드에서 해야 합니다
엑티비티 클레스에서 쓰레드 객체 생성하면서
런함수를 오버라이딩해서 그안에서 작업하는 방식으로
바꿔보세요
얼룩돼지 (15,720 포인트) 님이 2015년 10월 25일 답변
...