German Frage zu KeyCodes.KEYCODE_BACK (Abfangen der Zurück-Taste)

pucki

Active Member
Licensed User
Ich hab mal eine Frage zum Keycode_back.

Wie kann ich verhindern das, das das KeyCodes.KEYCODE_BACK Ereignis die App in den Hintergrund aber aktiv schiebt.

B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
      
    If KeyCode = KeyCodes.KEYCODE_BACK Then
        If my_back = "beschreibung" Then
            my_panel_1.Visible = True
            my_panel_3.Visible = False
            my_back = ""
        Else
            KeyCode = 0   
        End If
    End If

End Sub

Dieser Code funktioniert nur zur Hälfte. Beim ERSTEN Drücken der Zurück-Taste wird zwar die Panel sauber umgeschaltet, jedoch beim 2 Drücken wird die App in den Hintergrund geschoben.

Ich möchte gerne wie im Code versucht zu schreiben, das das drücken abgefangen und "gelöscht" wird.

Vielleicht weiß einer der Profis hier eine Lösung.

Gruß und VIELEN DANK im Voraus

Pucki
 

monki

Active Member
Licensed User
Auszug aus der Doku zu Activity

For example if the user pressed on the Back key and you return True then the OS will not close your activity.

Monki
 

klaus

Expert
Licensed User
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK And my_back = "beschreibung" Then
        my_panel_1.Visible = True
        my_panel_3.Visible = False
        my_back = ""
        Return True
    End If
    Return False
End Sub
 

pucki

Active Member
Licensed User
Danke Klaus.

Ich habe nämlich gerade die deutsche Anleitung überprüft ob ich was überlesen habe.

Das hilft mir sehr

Gruß

Pucki
 

pucki

Active Member
Licensed User
Danke für dein Tipp im Code Klaus, leider funktionierte es nicht. Aber für den Fall das es jemand anders wissen will. Hier ein Code der funktioniert.

B4X:
If KeyCode = KeyCodes.KEYCODE_BACK Then
        If my_back = "beschreibung" Then ' eigene Variable um den Rücksprung zu erkennen.  Wichtig damit man weiß was aufgerufen wurde
            my_panel_1.Visible = True ' hauptpanel anzeigen
            my_panel_3.Visible = False ' unter_panel (als Fenster z.b.) ausschalten
            my_back = "" ' Variable auf NIX setzen damit keine Fehler bei doppelklick oder zufallsklick ausgelöst werden.
        End If
        Return True  ' verhindert das das Prg. beendet wird
    End If

Wichtig ist die my_back Variable. Die löst die Steuerung aus und die handlung. Ist die in meinen Code auf "" gesetzt wird NIX außer RETURN TRUE ausgelöst. Auf die Weise kann man je nachdem von wo die "Zurück-Taste" aufgerufen wird, eigene Reaktionen coden. Nicht vergessen die my_back Variable GLOBAL zu Dimensionieren.

Gruß

Pucki
 

pucki

Active Member
Licensed User
Ist ja auch Absicht. ;)

Verlassen tu ich es bisher in den ich es einfach raus werfe. Alternativ gesehen werde ich vielleicht mal eine beenden Routine schreiben. Die dann über ein Button oder Menüpunkt ausgelöst wird.

Ich muss allerdings dazu schreiben das es sich bei der Software um eine rein private Software handelt, die ich nur auf meinen eigenen Tablett benutze. Sie erledigt für mich die Abfrage einiger Datenbanken. Der Code ist auch gekürzt gewesen um das Forum zu schonen. In Real hat my_back ca. 5-6 Zustände.

Und ich bin halt daran gewöhnt inzwischen mit der Back-Taste zurück zuspringen. Bloß wenn ich zu schnell bin, fliege ich jedes mal aus meiner Software, und das wollte und hab ich dank deiner Hilfe so perfekt geschafft zu verhindern. :):):)

Gruß

Pucki
 
Top