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