【发布时间】:2017-07-19 20:21:47
【问题描述】:
我有一个 postDelayed Runnable,它从 3 开始倒计时,执行一些代码 x 次。我通过 setText() 向用户显示文本。 setText() 函数在 if,else if,else 的某些区域有效,但在其他区域无效。
final Runnable r1 = new Runnable() {
@Override
public void run() {
if ((--count != 0) && (gestureCounter != selectedItems.size())) {
mHandler.postDelayed(this, 1000);
liveView.setText("Do " + selectedItems.get(gestureCounter) + " in " + String.valueOf(count));//works
}
else if(gestureCounter != selectedItems.size()){
count=4;//3 seconds + 1
liveView.setText("Hold " + selectedItems.get(gestureCounter));//NOT WORKING
mHandler.post(this);
fcalc.setTrain(true);
while(fcalc.getTrain()){
//wait till trainig is done
}
gestureCounter++;
}
else{
liveView.setText("");//works
fcalc.Train();
fcalc.setClassify(true);
}
}
};
mHandler.post(r1);
请查看我的 cmets 以了解哪些 setText() 函数有效或无效。 else if 中的那个是唯一不工作的那个。
有什么想法吗?
感谢您的帮助!
【问题讨论】:
-
您是否尝试过调试以发现当 setText() 不调用时您的可运行对象是否已被执行?
-
当你说“不工作”时,你是什么意思?此外,“else if”有
mHandler.post(this),它不会延迟,而不是mHandler.postDelayed(this,1000),它会延迟一秒钟。那是你想做的吗?
标签: java android runnable settext