2013-01-21 68 views
0

我想更新一個textview到一個值(計時器)在我當前的XML im查看,定時器的Java是一個glrenderer類的一部分,一切工作正常,除了我不能更新我的TextView的,我已經擴展到活動的階級是這樣的:更新textview時,在不同的類中的值更新

class MyGLRenderer extends Activity implements GLSurfaceView.Renderer {

使我能夠使用該計時器循環中:

TextView view = (TextView) findViewById(R.id.timetextview); 
view.setText(String.valueOf(globals.gametime)); 

它當它嘗試創建視圖時間對象時崩潰。

有一個方法可以讓我得到它的部分,定時器的值是一個全球性的,所以我可以在main.java像這樣創建一個按鈕,顯示它:

public void buttonExample (View v) 
{ 
    TextView view = (TextView) findViewById(R.id.timetextview); 
    view.setText(String.valueOf(globals.gametime)); 
} 

但隨着這一點,不會更新與實際的計時器,我不確定爲什麼它崩潰時,我使用的前兩個代碼塊,它編譯罰款。

+1

發佈日誌,錯誤 – tyczj

回答

0

我懷疑,你正在更新計時器線程中的Textview。

您可以在計時器線程試試這個 -

runOnUiThread(new Runnable() { 
      public void run() { 
      view.setText(String.valueOf(globals.gametime)); 
      } 
     }); 
+0

哇驚人的工作!萬分感謝! – user1978812

+0

酷...如果這是答案..然後你可以在正確的答案上打勾/投票...所以這對未來其他人會有幫助! – Jambaaz

0

使用拉夫提供訪問uithread在我的計時器代碼工作完美,這裏是我用

public Timer timer = new Timer(); 


timer.schedule(new TimerTask() 
{ 
    @Override 
    public void run() 
    { 
     runOnUiThread(new Runnable() { 
      public void run() { 
       TextView view = (TextView) findViewById(R.id.timetextview); 
       view.setText(String.valueOf(globals.GameTime)); 
       } 
      }); 
     } 
}, 250, 250);