2017-01-09 5 views
2

Ich habe diese Zeit in Sekundeninitialisieren Chronometer mit bestimmten Zeit JAVA

(zB Sekunden = 2796)

long seconds =2796; 
long millis = seconds * 1000; 

Also ich meine Chronometer wollen bei 46min 36sec beginnen

I versucht, dies zu tun:

chronometer.setBase(myMillis); 

long seconds =2796; 
long stoptime_millis = seconds * 1000; 
long elapsedMillis = SystemClock.elapsedRealtime() - stoptime_millis; 

customChronometer.setBase(elapsedMillis); 
customChronometer.start(); 

Aber es funktioniert nicht.
mit diesem Code meine Chrono 00:00

beginnen Ich habe versucht, verschiedene Ansätze, aber nichts scheint zum Beispiel dieses Android Chronometer start with defined value

Das ist mein CustomChronometer

public class CustomChronometer extends Chronometer { 
    public int msElapsed; 
    public boolean isRunning = false; 


    public CustomChronometer(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomChronometer(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    public CustomChronometer(Context context) { 
     super(context); 
    } 

    public int getMsElapsed() { 
     return msElapsed; 
    } 

    public void setMsElapsed(int ms) { 
     setBase(getBase() - ms); 
     msElapsed = ms; 
    } 

    @Override 
    public void start() { 
     super.start(); 
     setBase(SystemClock.elapsedRealtime() - msElapsed); 
     isRunning = true; 
    } 

    @Override 
    public void stop() { 
     super.stop(); 
     if (isRunning) { 
      msElapsed = (int) (SystemClock.elapsedRealtime() - this.getBase()); 
     } 
     isRunning = false; 
    } 
} 
+1

Wenn Sie die Start() -Methode aufrufen Sie setBase wieder anrufen. Ihr msElapsed ist höchstwahrscheinlich 0, so dass Sie immer Ihre Basis zurücksetzen. Auf diese Weise wird die customChronometer.setBase (electrifiedMillis); wird ignoriert. –

+0

Ja @ LeandroBorgesFerreira das ist richtig. Das ist die richtige Antwort. Du hast meinen Tag gerettet – exequielc

+0

Du bist willkommen =]. Ich poste einfach meinen Kommentar als Antwort. Wenn Sie es als die richtige Antwort akzeptieren können, schätze ich es. –

Antwort

1

Wenn Sie den Anruf zu helfen start() -Methode Sie rufen SetBase erneut auf. Ihr msElapsed ist höchstwahrscheinlich 0, so dass Sie immer Ihre Basis zurücksetzen. Auf diese Weise wird die customChronometer.setBase (electrifiedMillis); wird ignoriert.

So Ihr Code wie folgt ändern:

@Override public void start() { 
     super.start(); 
//setBase(SystemClock.elapsedRealtime() - msElapsed); - remove this line. 
     isRunning = true; 
} 
Verwandte Themen