2017-04-02 128 views
0

我正在制定一个HIIT计时器的方式,有一个'积极'和'休息'期间,将重复任何次数的时间倒计时计时器。我有两个定时器正在运行,但是在我的循环中重新启动定时器,当我调用这个.start时,它启动了两个定时器。倒计时HIIT计时器重新启动计时器

当我点击在Android Studio中this.start,它突出了。开始()调用,我想只有开始上面的“intervals--”

我如何才开始第一个。启动再一次?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    textView = (TextView) findViewById(R.id.textView); 
    minutesText = (EditText) findViewById(R.id.minutesText); 
    secondsText = (EditText) findViewById(R.id.secondsText); 
    startButton = (Button) findViewById(R.id.startButton); 
    intervalCount = (EditText) findViewById(R.id.intervalCount); 






    startButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (minutesText.getText().toString().equals("")) { 
       minutesInt = 0; 
      } else { 
       minutesString = minutesText.getText().toString(); 
       minutesInt = Integer.parseInt(minutesString); 

      } 

      secondsString = secondsText.getText().toString(); 
      if (secondsText.getText().toString().equals("")) { 
       secondsInt = 0; 

      } else { 
       secondsString = secondsText.getText().toString(); 
       secondsInt = Integer.parseInt(secondsString); 

      } 
      if (intervalCount.getText().toString().equals("")) { 
       intervals = 0; 
      } else { 
       intervalsString = intervalCount.getText().toString(); 
       intervals = Integer.parseInt(intervalsString); 
      } 


      final int timerAmount = ((minutesInt * 60) + (secondsInt)) * 1000; 



       Log.i("Hello, ", "intervals are " + intervals); 
       new CountDownTimer(timerAmount, 1000) { 
        @RequiresApi(api = Build.VERSION_CODES.N) 
        public void onTick(long millisUntilFinished) { 
         activeRunning = true; 
         String timeLeft = String.format("%02d : %02d", 
           TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), 
           TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
             TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)) 
         ); 
         textView.setText("Reamining: " + timeLeft); 
        } 

        public void onFinish() { 

         textView.setText("FINISHED1"); 


         try { 
          Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
          Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
          r.play(); 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 


         new CountDownTimer(5000, 1000) { 
          public void onTick(long millisUntilFinished) { 
           restRunning = true; 
           activeRunning = false; 
           String timeLeft = String.format("%02d : %02d", 
             TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), 
             TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
               TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)) 
           ); 
           textView.setText("Rest: " + timeLeft); 
          } 
          public void onFinish() { 
           restRunning = false; 

           textView.setText("FINISHED2"); 
           try { 
            Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
            Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
            r.play(); 
           } catch (Exception e) { 
            e.printStackTrace(); 
           } 


          } 
         }.start(); 

          if (intervals > 0) { 
           intervals--; 
           this.start(); 
          } 
        } 
       }.start(); 
        intervals--; 

      } 






    }); 


} 

    } 

回答

0

第二个计时器是否嵌套在第一个括号内?这可能是...

+0

这是,但我认为它必须是因为它在第一个计时器完成后运行。它嵌套在第一个计时器的onFinish中 –