2017-02-18 8 views
0

Я сделал таймер обратного отсчета, он начинается через 10 секунд, и когда таймер находится в 5 секунд, цель будет выполняться, но таймер будет продолжаться, а затем, когда таймер выполнит другое намерение, выполнит ... это мой проблема. все, что я хочу, когда таймер находится в 5 секунд, будет выполняться умысел, и таймер остановится, а другой не исполнится намерения.Остановить таймер при запуске цели

public class MainActivity extends AppCompatActivity { 
String timerStr; 
int timerInt; 
Intent intent; 
Intent intent2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    intent = new Intent(this, Main3Activity.class); 
    intent2 = new Intent(this, Main2Activity.class); 

    new CountDownTimer(10000, 1000){ 

     @Override 
     public void onTick(long millisUntilFinished) { 
      Log.i("Seconds left", String.valueOf(millisUntilFinished/1000)); 
      timerStr = String.valueOf(millisUntilFinished/1000); 

      progress = Integer.parseInt(timerStr); 
      Log.i("Timer: ", String.valueOf(progress)); 
      if (progress == 5){ 
       startActivity(intent2);  
      } 
     } 

     @Override 
     public void onFinish() { 
      Log.i("Done!","Countdown finished!"); 
      startActivity(intent); 
     } 
    }.start(); 

} 

Как остановить таймер при запуске?

+0

что вы хотите, я не получаю. Его метод onTick не звонит или звонит через 10 секунд. –

+0

Он звонит onCreate – smoy14

+0

@ smoy14 Можете ли вы объяснить это «намерение будет выполнено, и таймер остановится и не будет другого выполнения намерения»? Дальше? –

ответ

1

Думаю, вам это нужно. Вашего метод OnTick должен идти, как это:

@Override 
    public void onTick(long millisUntilFinished) { 
     Log.i("Seconds left", String.valueOf(millisUntilFinished/1000)); 
     timerStr = String.valueOf(millisUntilFinished/1000); 

     progress = Integer.parseInt(timerStr); 
     Log.i("Timer: ", String.valueOf(progress)); 
     if (progress == 5){ 
      startActivity(intent2); 
      if(timer!=null){ 
      timer.cancel(); //stop the timer by call 
} 

Надеется, что это помогает !!

+0

как насчет таймера.cancel? – smoy14

+0

, чтобы остановить таймер –

+0

Не забудьте инициализировать таймер с помощью таймера таймера = новый таймер(); –

0

Просто сделайте это так. Сохраните CountDownTimer в переменной, а затем наберите cancel(), когда он достигнет 5s.

public class MainActivity extends AppCompatActivity { 
String timerStr; 
int timerInt; 
Intent intent; 
Intent intent2; 
CountDownTimer countDownTimer; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    intent = new Intent(this, Main3Activity.class); 
    intent2 = new Intent(this, Main2Activity.class); 

    coutDownTimer = new CountDownTimer(10000, 1000){ 

     @Override 
     public void onTick(long millisUntilFinished) { 
      Log.i("Seconds left", String.valueOf(millisUntilFinished/1000)); 
      timerStr = String.valueOf(millisUntilFinished/1000); 

      progress = Integer.parseInt(timerStr); 
      Log.i("Timer: ", String.valueOf(progress)); 
      if (progress == 5){ 
       startActivity(intent2); 
       countDownTimer.cancel(); 
      } 
     } 

     @Override 
     public void onFinish() { 
      Log.i("Done!","Countdown finished!"); 
      startActivity(intent); 
     } 
    }.start(); 

} 
+0

можно отменить таймер внутри одного и того же объекта таймера, потому что в моем моем коде снаружи от таймера или второго таймера останавливается –

+0

@android_jain Да, это так. –

+0

@HamedMomeni Большое вам спасибо. оно работает. – smoy14

Смежные вопросы