Android无效()不更新textView
问题描述:
我试图做一个textView更新旁边的定时循环。我试过每次循环都使它失效()。这似乎工作,但计时器启动时,应用程序崩溃。Android无效()不更新textView
这里的循环:
private Timer timer;
private TimerTask timerTask = new TimerTask() {
@Override
public void run() {
thangO += 10;
textypoo.setText(Integer.toString(thangO));
textypoo.invalidate();
}
};
public void start() {
if (timer != null) {
return;
}
timer = new Timer();
timer.scheduleAtFixedRate(timerTask, 0, 2000);
}
这里是哪里的onCreate我初始化一些东西:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
textypoo = (TextView)findViewById(R.id.textmcview);
}
这里有2 OnClick方法。一,更新每当我按它TextView的,而另一个调用定时器:
public void sendthestuff(View view) {
setContentView(R.layout.activity_second);
textypoo = (TextView) findViewById(R.id.textmcview);
thangO++;
message = Integer.toString(thangO);
textypoo.setText(message);
}
public void bazinga(View view) {
start();
}
答
替换:
private TimerTask timerTask = new TimerTask() {
@Override
public void run() {
thangO += 10;
textypoo.setText(Integer.toString(thangO));
textypoo.invalidate();
}
};
要:
private TimerTask timerTask = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
thangO += 10;
textypoo.setText(Integer.toString(thangO));
textypoo.invalidate();
}
});
}
};
与运行尝试在UI线程 – Saveen
哪有我这样做?对不起,我是Java新手。 – moxide
没关系,通过把代码放在这里http://*.com/questions/12850143/android-basics-running-code-in-the-ui-thread进入计时器来计算出来。感谢您的帮助(: – moxide