2016-04-21 5 views
0

So möchte ich bestimmte Aktion X Anzahl ausgeführt werden, hängt davon ab, wie oft Benutzer es will. Benutzerauswahl wird von einem Textview-String ausgewählt werden, die mit diesem Code eingerichtet ist:Wiederholen Sie spezifische Aktion X Anzahl von Malen in Android

homeScreenPlus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dodajInterval(); 
      homeScreenMinus.setEnabled(counter > 0); 
     } 
    }); 

    homeScreenMinus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      oduzmiInterval(); 
      homeScreenMinus.setEnabled(counter > 0); 
     } 
    }); 


} 

private void oduzmiInterval() { 
    counter--; 
    brojIntervala.setText(Integer.toString(counter)); 
} 

private void dodajInterval() { 
    counter++; 
    brojIntervala.setText(Integer.toString(counter)); 
} 

Das sind im Grunde zwei Tasten, die oder Abnahmewert von Textview erhöhen.

Die Aktion, die ich x-mal durchgeführt werden soll, ist dies:

public void homeScreenStart(View view) { 
     linearniLayoutSetup.setVisibility(View.GONE); 

     new CountDownTimer(seekBarTimerDelay.getProgress() * 1000 + 100, 1000) { 

      @Override 
      public void onTick(long millisUntilFinished) { 
       updateTimer((int) millisUntilFinished/1000); 
      } 

      @Override 
      public void onFinish() { 
       textViewTimerVrijeme.setText("00:00"); 
       countDownTimerTrci(); 

       karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
       textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_trci)); 
      } 
     }.start(); 
    } 


    private void countDownTimerTrci() { 
     toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
     new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000 + 100, 1000){ 

      @Override 
      public void onTick(long millisUntilFinished) { 
       updateTimer((int) millisUntilFinished/1000); 
      } 

      @Override 
      public void onFinish() { 
       textViewTimerVrijeme.setText("00:00"); 
       karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
       imageViewTimerSlika.setImageResource(R.drawable.ic_timer_niski_intenzitet); 
       textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_hodaj)); 
       countDownTimerHodaj(); 
      } 
     }.start(); 
    } 

    private void countDownTimerHodaj(){ 
     toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
     new CountDownTimer(seekBarIntervaliNiskogIntenziteta.getProgress() * 1000 + 100, 1000){ 

      @Override 
      public void onTick(long millisUntilFinished) { 
       updateTimer((int) millisUntilFinished/1000); 
      } 

      @Override 
      public void onFinish() { 
       textViewTimerVrijeme.setText("00:00"); 
       karticaTimera.setBackgroundColor(getResources().getColor(R.color.colorAccent)); 
       textViewTimerTrciHodajBlaBla.setText("Done!"); 
      } 
     }.start(); 
    } 

So ist es Kombination von 3 seekbars oder Timer, ein Lauf nach dem anderen und dann sollten sie so oft wie Benutzer auswählt laufen.

Das Problem ist, ich habe keine Ahnung, wie Sie dies einrichten, und ich brauche diesen ersten Block von Code in Timern nur einmal ausgeführt werden, und diese 2 Methoden darunter X-mal auszuführen.

Wie kann ich es tun?

Antwort

0

Wenn ich etwas nicht vermisse, können Sie Ihren Code nicht einfach in eine Schleife einfügen, die auf den aktuellen Zähler verweist? Möglicherweise müssen Sie die Eingabe blockieren, damit der Benutzer den Zähler nicht ändern kann (außer Sie möchten dies), nachdem die Ausführung begonnen hat, aber das sollte es sein.

public void homeScreenStart(View view) { 
    linearniLayoutSetup.setVisibility(View.GONE); 

    CountDownTimer firstCountDown = new CountDownTimer(seekBarTimerDelay.getProgress() * 1000 + 100, 1000) { 

     @Override 
     public void onTick(long millisUntilFinished) { 
      updateTimer((int) millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      textViewTimerVrijeme.setText("00:00"); 
      countDownTimerTrci(); 

      karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
      textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_trci)); 
     } 
    } 

    CountDownTimer secondCountDown = new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000 + 100, 1000){ 

     @Override 
     public void onTick(long millisUntilFinished) { 
      updateTimer((int) millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      textViewTimerVrijeme.setText("00:00"); 
      karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
      imageViewTimerSlika.setImageResource(R.drawable.ic_timer_niski_intenzitet); 
      textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_hodaj)); 
      countDownTimerHodaj(); 
     } 
    } 

    CountDownTimer thirdCountDown = new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000 + 100, 1000){ 

     @Override 
     public void onTick(long millisUntilFinished) { 
      updateTimer((int) millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      textViewTimerVrijeme.setText("00:00"); 
      karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
      imageViewTimerSlika.setImageResource(R.drawable.ic_timer_niski_intenzitet); 
      textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_hodaj)); 
      countDownTimerHodaj(); 
     } 
    } 

    for (int i = 0; i < counter; i++) { 
     firstCountDown.start(); 
     toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
     secondCountDown.start(); 
     thirdCountDown.start(); 
    } 
} 

Sollte für Sie arbeiten

+0

Nun, ich kann nicht unter das alles für Schleife hinzufügen, wird einfach nicht – DaxHR

+0

arbeite ich den Inhalt Ihrer Timer prüfen, einfach nicht wirklich Methoden machen, dass sie sicherstellen, laufe sequenziell und du solltest gut gehen. Sonst werden sie sogar mit Ihrer bestehenden Methodik übertreten. –

Verwandte Themen