Textview没有更新?

时间:2011-01-23 23:36:41

标签: android 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);
}

任何明显的我都错过了??? 在日志中,新的引号会像应该的那样出现,但它们只是没有被绘制到实际的模拟器屏幕。

1 个答案:

答案 0 :(得分:6)

试试这个:

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毫秒。 :)

更新:

通过重用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);
}