【问题标题】:JAVA - Switch case never triggers a valueJAVA - 切换案例永远不会触发值
【发布时间】: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


【解决方案1】:

调用runnableCountdown.postDelayed(this, 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);
}
};

【讨论】:

  • 不客气。请接受我的回答作为正确答案。
猜你喜欢
  • 1970-01-01
  • 2014-05-15
  • 2021-05-22
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多