Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: DeveloperTalk. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

Kevin

Anfänger

  • »Kevin« ist der Autor dieses Themas

Beiträge: 23

Registrierungsdatum: 03.07.2011

Danksagungen: 2

  • Private Nachricht senden

1

11.10.2011, 10:56

Android Smartphones Backbutton in App einbinden.

Hi @all,

ich möchte in meiner App den Back-Button miteinbeziehen. Also wenn ich in einem Untermenü bin, dass ich dann über den Back-Button wieder ins Hauptmenü komme.
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

2

11.10.2011, 11:14

Also, prinzipiell geht das, in dem du die onKeyDown Methode der Activity überschreiben.

Java-Quelltext

1
2
3
4
5
6
7
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        	return true;
        }        
        return super.onKeyDown(keyCode, event);
    }

Das bewirkt jetzt, dass, wenn der Back-Key gedrückt wird, true zurückgegeben wird, also nichts passiert. Wenn ein anderer Knopf gedrückt wird wird das an die echte onKeyDown-Methode weitergereicht.
Jetzt willst du wahrscheinlich aber nicht, dass garnix passiert, sondern, dass man auch zurück kommt. Ich weiß nicht, wie man das professionell macht, ich habe es so gelöst:
Die Activity hat eine Variable, die Speichert, was beim dürcken des Back-Key passieren soll und ein Enum mit allen möglichen Aktionen:

Java-Quelltext

1
2
	public static enum BackKeyAction {QUIT, MAIN_MENU}
	private BackKeyAction backKeyAction;

Jetzt kann man die backKeyAction einfach setzten:

Java-Quelltext

1
backKeyAction = BackKeyAction.MAIN_MENU;

Und so sieht dann die onKeyDown-Methode aus:

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        	if(backKeyAction == BackKeyAction.QUIT) {
        		finish();
        	}
        	if(backKeyAction == BackKeyAction.MAIN_MENU) {
        		setMainView();
        	}
        	return true;
        }        
        return super.onKeyDown(keyCode, event);
    }


Wenn du dir den Code von KoordDroid anguckst, kannst du auch sehen, dass ich das vorher mit Strings statt nem Enum gemacht habe... Ich finds aber so schöner, auch wenns mehr zu tippen ist ;D
LG, Erik
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Kevin (11.10.2011)

Kevin

Anfänger

  • »Kevin« ist der Autor dieses Themas

Beiträge: 23

Registrierungsdatum: 03.07.2011

Danksagungen: 2

  • Private Nachricht senden

3

11.10.2011, 11:41

Was bringt eigentlich @Override?
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

4

11.10.2011, 12:41

Man könnte es eigentlich weglassen, aber es verbessert die Lesbarkeit des Codes, und außerdem gibt es einen Compilerfehler, wenn danach eine Methode kommt, die nicht eine Methode einer Basisklasse überschreibt...
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

Ähnliche Themen