Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA-Switch案例从不触发值_Java_Android_Switch Statement_Case_Runnable - Fatal编程技术网

JAVA-Switch案例从不触发值

JAVA-Switch案例从不触发值,java,android,switch-statement,case,runnable,Java,Android,Switch Statement,Case,Runnable,在发布之前,我没有发现类似的问题 我有一个简单的JavaRunnable,它获取一个int变量,将该值输出到一个对话框,然后将该变量减少1,并在显示下一个值之前执行1000ms的postdayed 当计数器为1时,Runnable在该对话框上显示“GO!” 当计数器为0时,Runnable必须使用removeCallbacksAndMessages(null)关闭对话框并停止自身 这是可运行的: private Runnable runnableCountdown = new Runnable(

在发布之前,我没有发现类似的问题

我有一个简单的Java
Runnable
,它获取一个
int变量
,将该值输出到一个对话框,然后将该变量减少1,并在显示下一个值之前执行1000ms的
postdayed

当计数器为
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--;
    }
};
问题出在
开关中。。。case
:当变量的值为
0
时,它从不执行case

因为它们从不在案例
0
中输入,所以对话框从不关闭,下一个
Runnable
也从不启动


我的开关盒缺少什么?

调用runnableCountdown.postDelayed(这是1000);在你减少计数之后

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));

            break;
    }

    count--;
    runnableCountdown.postDelayed(this, 1000);
}
};

这还不够,显示整个类。在
startChron()
stopCountdown()中有什么?你怎么知道它从不进入0?需要更多的代码。。什么是初始计数值?非常欢迎。请接受我的答案作为正确答案。