好的,我之前能够找到一个计时器,但现在我有另一个问题
所以,当我调用这个名为“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);
}
任何明显的我都错过了??? 在日志中,新的引号会像应该的那样出现,但它们只是没有被绘制到实际的模拟器屏幕。
答案 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);
}