German Counter + Timer und Resume

kaplanerkan

Member
Licensed User
Longtime User
Hallo,

ich habe ein Counter-Projeckt und sieht so aus:


B4X:
'Activity module
Sub Process_Globals
   'These global variables will be declared once when the application starts.
   'These variables can be accessed from all modules.

      
    Dim Timer1 As Timer

End Sub

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.


   Dim lblRecht, lblLink As Int
   Dim lblShowTime As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)

   Activity.LoadLayout("counter")

   
   lblShowTime.Text = "02:59"
   lblLink = lblShowTime.Text.SubString2(0,2)   ' 02   
   lblRecht = lblShowTime.Text.SubString2(3,5)  ' 59
   
   Timer1.Initialize("Timer1", 1000)
   Timer1.Enabled = True
   
End Sub

Sub Activity_Resume

 'Hier muss ich was definieren, aber was und wie?

End Sub


Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub Timer1_Tick

   lblRecht =  lblRecht - 1
   If lblRecht = 0 Then
      lblRecht = 59
      lblLink   = lblLink -1
      
      If lblLink = 0 AND lblRecht = 0 Then
         Timer1.Enabled = False
         ToastMessageShow ("3 min. ist vorbei",False)
      End If
      
   End If
   
   lblShowTime.Text = lblLink & ":" & lblRecht
   

End Sub

Ich gebe dem User 3 Min. Zeit, und der Counter fängt an rückwärts zu zählen und und die Zeit wird auf einem Label gezeigt. Soweit sou gut funktioniert ohne Probleme.

Mein Problem ist, wie muss ich definieren, wenn der User BACK oder HOME Taste drückt, und der Zähler immer noch rückwärst weiter zählt?

Beim obigen Zustand, wenn der User BACK-Taste drückt, und Program nochmal startet, wird der Counter wieder ganz vorne angefangen zum Zählen.


Danke im voraus.
erkaN
 

klaus

Expert
Licensed User
Longtime User
Am einfachsten wäre in Activity_Pause beide Werte in einer Datei zu speichern und sie in Activity_Resume wieder zu lesen.
Der Timer fährt dann von der letzten Stelle weiter, und wenn die Werte 0 sind wird nichts gemacht.

Beste Grüsse.
 

kaplanerkan

Member
Licensed User
Longtime User
Am einfachsten wäre in Activity_Pause beide Werte in einer Datei zu speichern und sie in Activity_Resume wieder zu lesen.
Der Timer fährt dann von der letzten Stelle weiter, und wenn die Werte 0 sind wird nichts gemacht.

Beste Grüsse.

Nein nein....Ich meinte es nicht so..Ich möchte nicht die Aktuellezeit behalten.

zb. Der Timer ist jetzt 02:15 und der User drückt BACK-Button...Nach 20 Sekunden startet wieder das Program, also 02:15 - 20 = 01:55 muss ich auf dem Label zeigen. Wie kann ich es realisieren?


danke
 

klaus

Expert
Licensed User
Longtime User
In Activity_Pause auch die Zeit DateTime.Now speichern und wenn das Programm wieder gestartet wird das alte gespeicherte Zeit von der neuen DateTime.Now Zeit abziehen und dann hast Du den Zeitunterschied.

Nebenbei, Ich würde es nicht mit zwei Zahlen (Minuten und Sekunden) machen, aber mit einem Sekundenzähler und in der Anzeige die Sekunden in Minuten und Sekunden umwandeln.

Beste Grüsse.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…