2011-01-23 89 views
2

好吧,我能夠弄清楚一個計時器,但現在我有另一個問題Textview沒有更新?

所以,當我調用這個函數稱爲「getNextQuote();」第一次在onCreate()它更新並獲得一個隨機引用並完美顯示,但是,當我再次嘗試時,在onResume()中,由於某種原因它不會刷新。

public void getNextQuote(){ 

    TextView tv = (TextView) findViewById(R.id.quote);//Text To be edited 
    Random QuoteNum = new Random();  

    int Quote = QuoteNum.nextInt(50); 

    android.util.Log.i("DebugB",""+Quote); 

    String q = myString[Quote];//find which string is corresponding to the number 
    tv.setText(q);//Set the Text 

    android.util.Log.i("DebugC",q); 
} 

什麼都不明顯我失蹤了? 在日誌中,新引號出現像應該那樣,但他們只是沒有得到真正的模擬器屏幕。

回答

5

試試這個:

int i = 0; 

public void getNextQuote(){ 

runOnUiThread(new Runnable() { 

    @Override 
    public void run() { 
     TextView tv = (TextView) findViewById(R.id.quote);//Text To be edited 
     tv.setText("test"+i);//Set the Text 
     i++; 
    } 
}); 

}

這計數TEST0,爲test1,test2的,... :)只要把你的代碼到runOnUiThread。當我嘗試你的代碼時,我得到一個錯誤(因爲線程)。如果你的間隔時間夠短,請檢查一下。試試1000毫秒。 :)

UPDATE:

也許這是通過再次重用了Runnable(真的不知道):)

int i = 0; 

Runnable updateTextView = new Runnable() { 

    @Override 
    public void run() { 
     TextView tv = (TextView) findViewById(R.id.text_view);//Text To be edited 
     tv.setText("test"+i);//Set the Text 
     i++; 
    } 
}; 

public void getNextQuote(){ 

    runOnUiThread(updateTextView); 
} 
+0

你好更好的形式給出,並感謝..它完美的作品。我可能應該早些時候說過,但我只是一個星期編程Android,所以我是一個巨大的nooooooob哈哈。非常感謝你= D – QQWW1 2011-01-23 23:58:33