2017-10-05 10 views
1

J'ai une question.
Lorsque mon activité démarre, le premier compte à rebours est en cours d'exécution.
Ce que j'essaie de faire est d'arrêter le premier compte à rebours, quand j'appuie sur un bouton, puis un second compte à rebours se déroule.
La deuxième partie fonctionne, mais je ne sais pas comment je peux arrêter le premier compte à rebours.
Il n'est appelé par aucun bouton, mais il démarre au démarrage de l'activité.Arrêter le premier compte à rebours au deuxième démarrage

J'espère que vous comprenez de quoi je parle.
Désolé pour mon mauvais anglais.

Voici mon code:

Button finnish; 
TextView letter; 
TextView textViewState, textVievCity, textViewRiver, textViewPlant, textViewAnimal, textViewName; 
EditText editTextState, editTextCity, editTextRiver, editTextPlant, editTextAnimal, editTextName; 
TextView textViewAnswer1, textViewAnswer2, textViewAnswer3, textViewAnswer4, textViewAnswer5, textViewAnswer6; 
TextView timer, timer1; 
public int counter = 120; 
public int finalCounter = 10; 
public int counterStop = 0; 


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

    Button finnish = (Button) findViewById(R.id.buttonFinnished); 
    finnish.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      final TextView timer1 = (TextView) findViewById(R.id.textViewFinalCOunter); 
      new CountDownTimer(10000, 1000) { 

       @Override 
       public void onTick(long millisUntilFinished) { 
        timer1.setText(String.valueOf(finalCounter)); 
        finalCounter--; 


       } 

       @Override 
       public void onFinish() { 
        timer1.setText("koniec rundy"); 
       } 
      }.start(); 
     } 
    }); 
    TextView letter = (TextView) findViewById(R.id.textViewLetter); 
    final String[] letters = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "ł", "m", "n", "o", "p", "r", "s", "t", "u", "w", "z"}; 
    int random = (int) (Math.random() * 23); 
    letter.setText(letters[random]); 

    final TextView timer = (TextView) findViewById(R.id.textViewTimer); 



     new CountDownTimer(120000, 1000) { 

      @Override 
      public void onTick(long millisUntilFinished) { 
       if (timer1 != null) { 
        timer.setText(String.valueOf(counterStop)); 
       } else { 

        timer.setText(String.valueOf(counter)); 
        counter--; 
       } 
      } 

      @Override 
      public void onFinish() { 
       timer.setText("koniec rundy"); 
      } 
     }.start(); 

    } 
} 

Répondre

0

Vous devez stocker une référence à la CountDownTimer si vous voulez arrêter par exemple

private CountDownTimer firstCountDown; 

firstCountDown = new CountDownTimer(120000, 1000){...}; 

Ensuite, vous pouvez annuler le premier chef par l'appelant dans le ClickListener du bouton avec CountDownTimer#cancel() comme celui-ci

@Override 
public void onClick(View v) { 
    firstCountDown.cancel() 
     ... 
} 
+0

Ok je comprends, mais maintenant comment je peux mettre les résultats forment « firstCountDown » dans textView comme j'essayais de faire avant? – MichalG

+0

@MichalG Vous pouvez utiliser 'TextView' et l'obtenir à partir de là en appelant' timer.getText() '. –