Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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 onClick方法赢得';我不能启动倒计时,为什么?_Java_Android - Fatal编程技术网

Java onClick方法赢得';我不能启动倒计时,为什么?

Java onClick方法赢得';我不能启动倒计时,为什么?,java,android,Java,Android,我正在构建一个倒计时应用程序,我让用户按下一个按钮来启动计时器。按下按钮时,计时器倒计时(工作会话)。然后,用户可以等待计时器完成或通过单击同一按钮(重新标记为“重置”)重置计时器 如果他们等待计时器完成,则会启动另一个计时器(短时间间隔-也称为中断会话)。此时,如果他们按下按钮(重新标记为“结束中断”),将取消中断计时器并启动另一个工作会话 由于某种原因,当我点击我的按钮时,它不会启动计时器。在我当前的代码设置中。我已经测试了计时器和按钮,我知道它们可以工作 出于某种原因,我的onClick方

我正在构建一个倒计时应用程序,我让用户按下一个按钮来启动计时器。按下按钮时,计时器倒计时(工作会话)。然后,用户可以等待计时器完成或通过单击同一按钮(重新标记为“重置”)重置计时器

如果他们等待计时器完成,则会启动另一个计时器(短时间间隔-也称为中断会话)。此时,如果他们按下按钮(重新标记为“结束中断”),将取消中断计时器并启动另一个工作会话

由于某种原因,当我点击我的按钮时,它不会启动计时器。在我当前的代码设置中。我已经测试了计时器和按钮,我知道它们可以工作

出于某种原因,我的onClick方法没有启动计时器,有什么帮助吗?我必须对我的倒计时课做些什么吗

public class SimplyPomodoroActivity extends Activity implements OnClickListener {

    TextView tvTimer; // used to update timer...
    Button btStart; //main button
    Vibrator vibrator; // vibrate when button is pressed..

    boolean off = true;
    boolean working = false;



    long longBreak = 8000; // 900000;
    long shortBreak = 6000; // 300000;
    long workTime = 10000; // 1500000;

    long v = 100; // vibration sequence
    int pomoCount = 1; // keep track of the number of Pomodoros...



    // PomoTimer pomoBreak = new PomoTimer(startTime, interval);

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initialiaze(); //connect xml to java code and setup listener

    }

    private void initialiaze() {
        tvTimer = (TextView) findViewById(R.id.tvTimer);
        btStart = (Button) findViewById(R.id.btStart);
        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

        btStart.setOnClickListener(this); // register listener
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        vibrator.vibrate(v);

        //Do stuff
        if(off){ //Turn on
            //change text
            //start work timer --> work timer will go to break automatically
            off = false;
            working = true;
            btStart.setText("Reset");
            workCounter.start();
        }

        if(working){ 
            //turn off
            btStart.setText("Start");
            workCounter.cancel();
            working = false;
            off = true;
        }else if(!working && !off){ 
            //end break
            shortBreakCounter.cancel();
            btStart.setText("Reset");
            workCounter.start();
        }

    }

    CountDownTimer workCounter = new CountDownTimer(workTime, 1000) {

        public void onTick(long millisUntilFinished) {
            displayRemainingTime(millisUntilFinished);
        }

        public void onFinish() {
            tvTimer.setText("0:00");
            working = false;
            pomoIncrement();
            btStart.setText("End Break");
            shortBreakCounter.start();
        }
    };

    CountDownTimer shortBreakCounter = new CountDownTimer(shortBreak, 1000) {

        public void onTick(long millisUntilFinished) {
            displayRemainingTime(millisUntilFinished);
        }

        public void onFinish() {
            working = true;
            pomoIncrement();
            btStart.setText("Reset");
            workCounter.start();
        }
    };

    CountDownTimer longBreakCounter = new CountDownTimer(longBreak, 1000) {

        public void onTick(long millisUntilFinished) {
            displayRemainingTime(millisUntilFinished);
        }

        public void onFinish() {
            pomoIncrement();

        }
    };


    private void pomoIncrement() {
        // increment by one, reset at 8
        pomoCount += (pomoCount > 8) ? -pomoCount : 1;
    }

    private void displayRemainingTime(long millisUntilFinished) {

        // TODO Auto-generated method stub
        int sec = (int) (millisUntilFinished / 1000) % 60;
        int min = (int) ((millisUntilFinished / 1000) / 60);
        tvTimer.setText("" + min + ":" + sec);
    }
}
我的倒计时计时器不会在if(off){…}语句中启动。。。当我将其更改为其他配置时,它不会取消当前正在运行的倒计时。

添加一个

return; 
之后

btStart.setText("Reset");
workCounter.start();

因此,计时器不会在启动后立即取消。

控制是否超出此语句?振动器。振动(v);您的按钮点击功能似乎不正常。您是否记录了单击事件?