1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

onKeyDown "stört" onCreateOptionsMenu

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Grossi, 25.07.2011.

  1. Grossi, 25.07.2011 #1
    Grossi

    Grossi Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    29.07.2010
    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
     
  2. swordi, 25.07.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
  3. Grossi, 25.07.2011 #3
    Grossi

    Grossi Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    29.07.2010
    Super!

    Klappt!

    Vielen Dank!
     

Diese Seite empfehlen