2012-12-15 2 views
1

UI 스레드에서 tTxtViews의 텍스트 만 변경할 수 있지만 작업 할 방법이없는 것 같습니다.스레드에서 TextView 텍스트 변경

좀 더 자세히 설명하겠습니다. 시간이 경과 한 TextView를 갖기 위해 노력하고 있지만 스레드 나 계속 호출되는 메서드에서는 수행 할 수 없습니다. 이 작업을 도와 줄 수 있습니까? 왜냐하면 나는 아이디어가 부족하기 때문입니다.

감사합니다.

+0

을하려고 이렇게 잊지 마세요? 여기에 시련을 게시하십시오. 아마도 우리는 어디로 잘못되었는지 알아낼 수 있도록 도울 수 있습니다. –

+0

A-C의 설명은 TextView를 어디에서 변경할지에 따라 다릅니다. – Christine

답변

2
 public class MainActivity extends Activity { 

      protected static final long TIMER_DELAY = 100; 
      private TextView tv; 
      protected Handler handler; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 

       tv = (TextView)findViewById(R.id.helloWorld); 
       handler = new Handler(); 
       handler.post(timerTask); 


      } 

      private Runnable timerTask = new Runnable() { 
       public void run() { 
        Calendar now = Calendar.getInstance(); 

        //format date time 
        tv.setText(String.format("%02d:%02d:%02d", now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND))); 

        //run again with delay 
        handler.postDelayed(timerTask, TIMER_DELAY); 
       } 
      }; 


     } 

.

@Override 
    public void onPause() { 

     if (handler != null) 
      handler.removeCallbacks(timerTask); 

     super.onPause(); 
} 

을 그리고 당신은 다시 시작하려는 경우 당신이 그것을 할 수 없습니다 알고, 당신이 뭔가를 시도했습니다해야하는 경우 응용 프로그램은 그럼이

@Override 
    public void onResume() { 
     super.onResume(); 

     if (handler != null) 
      handler.post(timerTask); 
} 
+0

대단히 감사합니다! amaxing 솔루션! – Yuval3210

1

사용이

new Thread(new Runnable() { 

    @Override 
    public void run() { 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       // Do what you want. 
      }   
     }); 
    }   
}).start(); 

또는 사용하십시오 Handler :

미안이 추가 잊었
Runnable r = new Runnable() { 

    @Override 
    public void run() { 
     // Do what you want. 
    } 
}; 
Handler mHandler = new Handler(); 
mHandler.post(r); 
관련 문제