Ich möchte, dass ein einfacher mm: ss-Timer auf meiner Aktionsleiste angezeigt wird, in der Lage sein soll, die Anzahl der Minuten auszuwählen, ab der rückwärts gezählt wird, und dann eine Methode aufrufen, sobald sie auf 0 steht. Ist das möglich und wie? Danke
Ich habe es geschafft, indem ich ein TextView
als zur Aktionsleiste hinzugefügt habe Aktionsansicht im Menü und aktualisieren Sie sie dann in regelmäßigen Abständen mit CountDownTimer
.
(Getestet auf einem Android 3.0 Emulator, einem Android 4.3 Emulator und einem echten Gerät mit Android 4.3).
Hier ist das XML für den Menüpunkt. Beachten Sie, dass actionViewClass="android.widget.TextVew"
(showAsAction und actionViewClass nicht den android-Namespace haben, da ich die Unterstützungsaktionsleiste verwende).
In onCreateOptionsMenu
finde ich die MenuItem
und rufe getActionView
an, um sie der privaten TextView
, timerText
zuzuordnen. Ich wende hier auch etwas Polsterung an, damit es nicht direkt am Bildschirmrand ist.
Ich habe eine Methode namens startTimer
, um CountDownTimer
zu starten und timerText
in onTick
zu aktualisieren. Ich rufe startTimer
von onCreateOptionsMenu
auf, um sicherzustellen, dass auf timerText
nicht zugegriffen wird, bevor es initialisiert wurde. (Vorher habe ich startTimer
von onCreate
aufgerufen, aber NullPointerException
).
Ich bin sicher, dass jeder, der dies liest, einen besseren Weg kennt, um eine ganze Zahl von Sekunden in einen Timecode wie "00:00:00" zu konvertieren, aber nur für den Fall, dass ich die secondsToString
Methode I teilen werde verwendet in onTick
, oben.
Menü xml
%Vor%** public boolean onCreateOptionsMenu (Menü Menü) "
%Vor%Tags und Links android-actionbar countdowntimer