onKeyDown "stört" onCreateOptionsMenu

G

Grossi

Gast
Hallo zusammen,

ich habe ein Problem, das ich selber nicht gelöst kriege. Und zwar fange ich mit onKeyDown die Hardware-Back-Taste ab und will dem User die Möglichkeit geben, über die Hardware-Menü-Taste ein Benutzermenü anzeigen zu lassen.

Wenn ich aber die Back-Taste abfange, wird das Menü nicht mehr angezeigt. Ohne das Abfangen wird das Menü problemlos angezeigt.

Ich bin mittlerweile ziemlich ratlos.
Vielleicht könnt ihr mir ja helfen, zu erkennen, wo mein Fehler liegt.

Hier mein Code:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu, menu);
return result;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.ende) {
showDialog(10);
}
if (item.getItemId() == R.id.options) {
start_menu_aktivitaet();
}
if (item.getItemId() == R.id.preferences) {
start_preferences_aktivitaet();
}
return true;
}

@Override
public Dialog onCreateDialog(int id) {
switch (id) {
case 10:
Builder back = new AlertDialog.Builder(this);
back.setIcon(R.drawable.question);
back.setTitle(R.string.frage_ende_kurz);
back.setMessage(R.string.frage_ende);

back.setPositiveButton(R.string.frage_ja, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//TODO aktuelle Daten sichern
finish();
}
});

back.setNegativeButton(R.string.frage_nein, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//nichts tun
}
});

back.show();
}
return super.onCreateDialog(id);
}

/** Wenn die nachfolgenden Zeilen aktiv sind, wird das Menü
beim Klick auf die Hardware-menü-Taste nicht mehr angezeigt
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK)) {

//TODO aktuellen Schiesszettel sichern
finish();
}
return true;

}
*/

private void start_menu_aktivitaet() {
Intent intent = new Intent(this,MyMenu.class);
startActivity(intent);
}

private void start_preferences_aktivitaet() {
Intent intent = new Intent(this,MyPreferences.class);
startActivity(intent);
}


Danke im Voraus,
Grossi
 
ganz einfach

onkeydown() {
if (keycode_back) {
//do something
return true;
}
return false;
}

einfach false returnen, wenn nicht die back taste gedrückt wurde.

btw: es gibt auch die methode
onBackKeyDown ( oder so ähnlich )

die macht genau das
 
Super!

Klappt!

Vielen Dank!
 

Ähnliche Themen

znieh99
Antworten
3
Aufrufe
1.749
znieh99
znieh99
W
Antworten
0
Aufrufe
927
Wicki12
W
T
  • TSGames
Antworten
6
Aufrufe
1.733
BenOtto
B
Zurück
Oben Unten