Je travaille sur une application Android où je voudrais que le CountdownTimer saute 5 secondes lorsque le bouton de réinitialisation est pressé. Par exemple, si le bouton de réinitialisation est enfoncé lorsque le compte à rebours est à t = 15, le chronomètre sautera les cinq secondes suivantes et le chronomètre affichera alors t = 10. Voici ce que j'ai essayé mais cela n'a pas fonctionné:Faire le compte à rebours sauter 5 secondes lorsque le bouton est pressé (studios Android)
code Button:
buttonReset = (Button) findViewById(R.id.ButtonReset);
buttonReset.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
TextView output = (TextView) findViewById(R.id.Display);
r = 1;
output.setText("");
resetStatus = true;
}
}
);
Edit: J'ai mis à jour le code de la minuterie. Maintenant, j'annule l'ancienne minuterie et j'en entame une nouvelle.
Compte à rebours code minuterie:
public void start()
{
new CountDownTimer(59*1000, 1000)
{
TextView timer = (TextView) findViewById(R.id.Timer);
public void onTick(long millisUntilFinished)
{
int TimeSeconds = (int) millisUntilFinished/1000;
if (resetStatus)
{
cancel();
TimeSeconds = TimeSeconds - 5;
final int finalTimeSeconds = TimeSeconds;
new CountDownTimer(finalTimeSeconds*1000, 1000)
{
@Override
public void onTick(long millisUntilFinished) {
if (finalTimeSeconds >= 10)
{
//displays time
timer.setText("00:" + finalTimeSeconds);
}
else
{
//displays time
timer.setText("00:0" + finalTimeSeconds);
}
resetStatus = false;
}
@Override
public void onFinish() {
gameOverDialogue();
}
}.start();
}
else
{
if (TimeSeconds >= 10)
{
//displays time
timer.setText("00:" + TimeSeconds);
}
else
{
//displays time
timer.setText("00:0" + TimeSeconds);
}
}
}
public void onFinish()
{
gameOverDialogue();
}
}.start();
}
Lorsque j'appuie sur le bouton de remise à zéro maintenant, la minuterie saute 5 secondes, après quoi l'affichage se fige. Cependant, la minuterie continue à cocher et atteint 0. Je pense que c'est parce que dans le deuxième compte à rebours la variable final
finalTimeSeconds
est utilisée au lieu de TimeSeconds
. Aucune suggestion?
Merci à l'avance
J'ai changé le code dans ma question. J'annule l'ancien minuteur et en démarre un nouveau maintenant mais un autre problème survient que j'ai décrit en bas de la question éditée –
Dans votre code mis à jour, le second CountDownTimer que vous créez ne contient pas le même code que le premier. Vous feriez mieux de créer votre propre sous-classe de CountDownTimer et en créer de nouveaux si nécessaire. L'annulation doit se faire directement dans votre onclick, puis vous en commencez une nouvelle avec l'heure mise à jour. Oubliez votre réinitialisation booléenne. – smora