2012-06-16 10 views
11

Kodun bu bölümünü benim onCreate() yöntemimde ekledim ve uygulamam kilitlendi. yardıma ihtiyacım var.uygulaması "Yanlış Konu Özel Durumundan Çağırıldı" ile kilitleniyor

LogCat:

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread 
that created a view hierarchy can touch its views. 

KODU:

final TextView timerDisplayPanel = (TextView) findViewById(R.id.textView2); 

    Timer t = new Timer(); 
    t.schedule(new TimerTask(){ 
     public void run(){ 
      timerInt++; 
      Log.d("timer", "timer"); 
      timerDisplayPanel.setText("Time ="+ timerInt +"Sec"); 
     } 
    },10, 1000); 
+0

(Bir işleyiciyi nasıl kullanacağım konusunda hiçbir fikrim yok.) - Bir işleyici nesnesini kullanmam gerektiğini bir yere okudum. \ –

cevap

32
Only the original thread that created a view hierarchy can touch its views. 

Bunu istisna verir, böylece, Sigara UI Thread UI elemanın metni değiştirmek için çalışıyoruz. Kullanın runOnUiThread

Timer t = new Timer(); 
t.schedule(new TimerTask() { 
public void run() { 
     timerInt++; 
     Log.d("timer", "timer"); 

     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       timerDisplayPanel.setText("Time =" + timerInt + "Sec"); 
      } 
     }); 

    } 
}, 10, 1000); 
İlgili konular