App beenden gelingt nicht

  • Antworten:4
Ramirez
  • Forum-Beiträge: 13

29.07.2014, 22:18:14 via Website

Hallo zusammen,

ich habe folgende methode in meiner app stehen

public void onBackPressed() {
        setContentView(R.layout.startbidschirm);
    }

Doch sobald ich mithilfe des zurückbuttons beim startbildschirm bin, will ich bei erneuten drücken
des zurück buttons, das sich die app schliesst.

Wie stelle ich das an?

Antworten
Stefan W
  • Forum-Beiträge: 424

30.07.2014, 07:15:27 via App

Wenn ich das richtig versteh passiert das in ein und der selben Activity !?

Auf die schnelle würden mir 2 Möglichkeiten einfallen :

  1. Beim ersten zurück drücken, setzt du zusätzlich eine boolean Variable auf true, wenn diese beim erneuten zurück drücken noch true ist, beendest du die APP mittels finish(). Falls dazwischen was anderes passiert, muss natürlich gegebenenfalls die Variable auf false gestellt werden.

  2. Du definierst ein Zeit-Delta, falls in diesem Zeit-Delta 2 mal zurück gedrückt wird, beendest du die APP, ansonst wird nur der jetztige Code ausgeführt. Da ich den Ablauf deines Programms nicht kenne, kann ich aber nicht sagen ob das reibungslos funktioniert, oder in diesem Zeit-Delta etwas passiert, dass den Zustand ändert und die APP dann doch nicht geschlossen werden soll.

Die 1. Variante ist IMO die gescheitere ;)

LG,
Stefan

Antworten
Georg C.
  • Forum-Beiträge: 235

30.07.2014, 09:30:51 via Website

die Idee (mit dem boolean Flag) reicht es (vermute) nicht aus!
(sollte es in der onBackPressed() Methode ausgewertet sein soll; )
...
Man braucht dafür noch einen "Art - counter" - der die -> bei ersten Klck ... bei zweiten Klick ... events unterscheidet.

Wenn ich aber "alles [by- Activity- Lebenszyklus] richtig verstanden habe"
-> wird bei dem zweitem (onBackPressed() ) Buttonclick
die onRelased() Methode ausgeführt.
Hier -> also in der onRelased() Methode einfach die finish() ausführenlassen - Fertig!
- oder?

LG
Georg

— geändert am 30.07.2014, 09:34:14

Sorry für Gramatik & Stilistik Fehler.

Antworten
Stefan W
  • Forum-Beiträge: 424

30.07.2014, 10:00:11 via App

Ich sehe keinen Grund warum es mit einer boolean Variable nicht funktionieren sollte.

Die Var ist ja, wenn du so willst, ein Counter, der angibt ob schon einmal vorher zurück gedrückt wurde (true) oder nicht (false).

Wenn ja : APP beenden, wenn nein : ContentView ändern (so wie es jetzt implementiert ist).

P.s. statt finish(); kannst du auch super.onBackPressed(); verwenden ;)

Antworten
Georg C.
  • Forum-Beiträge: 235

30.07.2014, 20:37:24 via Website

Doch sobald ich mithilfe des zurückbuttons beim startbildschirm bin,
will ich bei erneuten drücken des zurück buttons, das sich die app
schliesst.

... bei erneuten drücken des zurück buttons ...

boolean klick = false;
...
public void onBackPressed() {

// erstes klick auswerten -> startbidschirm
if(!klick)
setContentView(R.layout.startbidschirm);

// zweites klick auswerten -> beenden
// > .............................<
// > ............???..............<
// > .............................<
}
;)
LG
Georg

Sorry für Gramatik & Stilistik Fehler.

Antworten