2016-09-06 3 views
0

Ich implementierte einen Countdown-Timer (2 min) 1:59 -> 00:00 aber nach einer Weile funktioniert es nicht richtig und wird verrückt! Gefällt mir: 01:46 - 01:45 - 01:46 - 01:43 - 01:42 ... Was läuft falsch? Edit: Timer ist in Fragment Vielen Dank im Voraus.Countdown timer funktioniert nicht richtig in android

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ApplicationLauncher.mainComponent().inject(this); 
    setActionBarHidden(true); 
    setDrawerLocked(true); 
    countDownTimer = new CountDownTimer(120000, 1000) { 

     public void onTick(long millisUntilFinished) { 
      mTimerTv.setText(formatTime(millisUntilFinished)); 
     } 
     public void onFinish() { 
      mTimerTv.setVisibility(View.INVISIBLE); 
      mSendAgainBtn.setClickable(true); 
      mSendAgainBtn.setBackground(getActivity().getResources().getDrawable(R.drawable.brown_btn_selector)); 
      mSendAgainBtn.setOnClickListener(onSendAgainButtonClick); 
     } 

    }.start(); 
} 

    private String formatTime(long millis) { 
    output = ""; 
    seconds = millis/1000; 
    long minutes = seconds/60; 

    seconds = seconds % 60; 
    minutes = minutes % 60; 

    String secondsD = String.valueOf(seconds); 
    String minutesD = String.valueOf(minutes); 
    if (seconds < 10) 
     secondsD = "0" + seconds; 
    if (minutes < 10) 
     minutesD = "0" + minutes; 
    output = minutesD+ " : " + secondsD; 
    return output; 
} 
+0

was meinst du mit "nach einer Weile"? Tritt es nach dem Start einer Ansicht des Timers (oder der App) oder direkt beim ersten Start nach einigen Sekunden auf? – Opiatefuchs

+0

ich meine nach ein paar sekunden timer läuft es schief. Zum Beispiel, wenn der Timer startet, ist es in Ordnung, aber nach Sekunden (10 Sekunden zum Beispiel) geht es falsch – BoshRa

+0

und Sie können ausschließen, dass es nicht wegen mehrerer gestarteter Timer oder Aktivitäten ist? Nur zur Klarstellung ... – Opiatefuchs

Antwort

0

könnten Sie diesen Code in Fragmenten oder viewPager schreiben. countDown Timer wird mehrmals aufgerufen. Versuchen Sie, timer.start() in onClickListner einer beliebigen Schaltfläche zu setzen und zu überprüfen. Es funktioniert perfekt.

+0

Ich habe Log.e ("onTick", t); und sah, dass nur jeweils ein Zähler aktiv ist. log zeigt richtige Zahlen, aber UI-Timer nicht – BoshRa

+0

Fügen Sie eine Schaltfläche zu Ihrem XML-Layout und schreiben Sie einen Listener für die Schaltfläche und in auf Knopfdruck starten Sie den Timer. Starten Sie den Timer nicht direkt in der On Create-Methode, damit wir feststellen können, dass nur ein Timer ausgeführt wird. Probieren Sie es einmal und kommentieren –

+0

ich versuchte und das gleiche Problem! Beachten Sie, dass ich Genymotion virtuell verwende. – BoshRa