我正在尝试创建一个在5秒后执行某些操作的计时器。
现在我的主要活动(我只有1)我写了这个课:
class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
textFeedback.setText("test");
timer.cancel();
}
}
}
在一个函数中(也在我的mainactivity中)我创建了一个计时器作为新的Reminder(5) 5秒钟后,应用程序崩溃 我没有看到什么是错的,因为我在像这样的普通java应用程序中这样做。
答案 0 :(得分:1)
不确定您初始化textFeedback
的位置。
textFeedback.setText("test");
无法从计时器任务更新ui。计时器任务在非ui线程上运行。 Ui只能在ui线程上更新。
您的选项使用Handler
或runOnUiThread
。
注意runOnUiThread是Activity类的一种方法。需要活动上下文
更多信息
答案 1 :(得分:1)
感谢。
解决这个问题:
new CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) {
//textFeedback.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
textFeedback.setText("");
}
}.start();
答案 2 :(得分:0)
当类Remainder is istatiate不知道var text Feedback时,因为你需要传递文本的所有者反馈