Textview没有更新?

QQW*_*WW1 2 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);
}
Run Code Online (Sandbox Code Playgroud)

什么明显我错过了??? 在日志中,新的引号就像应该的那样出现,但它们只是没有被吸引到实际的模拟器屏幕.

Rai*_*ner 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++;
    }
});
Run Code Online (Sandbox Code Playgroud)

}

这会计算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);
}
Run Code Online (Sandbox Code Playgroud)