【发布时间】:2018-02-01 19:34:18
【问题描述】:
在发帖之前我没有发现类似的问题。
我有一个简单的 Java Runnable,它获取 int variable,将值输出到对话框,然后将此变量减 1,并在显示下一个值之前执行 1000 毫秒的 postDelayed。
当计数器为1 时,Runnable 显示“GO!”在那个对话框上。
当计数器为0 时,Runnable 必须通过使用removeCallbacksAndMessages(null) 来关闭对话框并自行停止。
这是可运行的:
private Runnable runnableCountdown = new Runnable() {
@Override
public void run() {
TextView tv_countdown = (TextView)dialog.findViewById(R.id.tv_countdown);
switch(count) {
case 0:
startChron();
stopCountdown();
break;
case 1:
tv_countdown.setText("GO!");
break;
default:
tv_countdown.setText(String.valueOf(count - 1));
countdown.postDelayed(this, 1000);
break;
}
count--;
}
};
问题出在switch ... case:当变量的值为0时,它永远不会执行案例。
因为他们从不输入案例0,所以对话框永远不会关闭,下一个Runnable 永远不会启动。
我的开关盒缺少什么?
【问题讨论】:
-
这还不够,展示整个班级。
-
startChron()和stopCountdown()里面有什么? -
你怎么知道它永远不会进入0?
-
需要更多代码..什么是初始计数值?
标签: java android switch-statement case runnable