我有一个有TextView的活动,我想不断更新文本..
在Java中,我可以创建一个无限的while循环,并且只需每次迭代设置文本。
但是当我尝试在Android中执行此操作时,它会显示黑屏,甚至不会加载活动。
我把无限放在onCreate
方法中,也许这就是崩溃的原因..但如果是的话,我应该把它放在哪里?
答案 0 :(得分:13)
使用Handler和一个单独的线程/ runnable来持续更新TextView而不是While循环:
Handler handler=new Handler();
handler.post(new Runnable(){
@Override
public void run() {
// upadte textView here
handler.postDelayed(this,500); // set time here to refresh textView
}
});
答案 1 :(得分:2)
基于https://stackoverflow.com/a/14295193/895245的最小工作示例:
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final int i = 0;
final TextView textView = new TextView(this);
textView.setText(String.format("%d", i));
setContentView(textView);
final Handler handler = new Handler();
class MyRunnable implements Runnable {
private Handler handler;
private int i;
private TextView textView;
public MyRunnable(Handler handler, int i, TextView textView) {
this.handler = handler;
this.i = i;
this.textView = textView;
}
@Override
public void run() {
this.handler.postDelayed(this, 500);
this.i++;
this.textView.setText(String.format("%d", i));
}
}
handler.post(new MyRunnable(handler, i, textView));
}
}
您只需将其粘贴到android create project [...]
生成的主要活动中,您就会在应用中看到一个计数器。
在Android 22上测试。