2009-08-27 13 views
0

In meiner Anwendung überschreibe ich Androcks Backkey-Standardfunktionen (durch Override Onkeydown) .seines funktioniert gut.Aber wenn ein Spinner Komponenten Standardauswahl Elemente Windows und virtuelle Tastatur (In Android 1.5) in die Bildschirm die Standard-Zurück-Schlüsselfunktionalität zusammengebrochen wegen meines Überschreibens.Problem beim Überschreiben der Standard-Backkeys-Funktion

Gibt es eine Möglichkeit, dieses Problem zu lösen? oder wie heißt das Fenster virtualkeypadwindow und spinner components? Vielen Dank. . .

+0

leitet mich, mein Problem zu vervollständigen ... – arams

+0

1.Progress Dialog 2 .Virtual Keypad 3.Spinner Components/AlertDialog Wie können wir wissen, dass diese Art von Dialogen in einem screeen geöffnet sind, irgendeinen möglichen Weg, diese Dinge programmatisch zu tun? – arams

Antwort

1

Das Problem ist, wenn es eine Dialog auf dem Bildschirm gibt, die eigentlich eine völlig separate Aktivität ist, verstecken die Dialoghelfer es nur vor dir. Es gibt nur zwei Möglichkeiten, wie Sie dies lösen können (abhängig davon, was Sie tun möchten).

Sie können den Typ des von Ihnen verwendeten Dialogfelds erweitern und die onKeyPress in der abgeleiteten Klasse überschreiben und dann anstelle des Standarddialogfelds des Systems verwenden.

public class MyDialog extends ProgressDialog { 
    /* ... */ 

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // handle the keypress 
      return true; 
     } 
     return false; 
    } 
} 

Sie könnten die Dialoge mit der kündbaren Option starten dann die Aktion abbrechen fangen ... so etwas wie:

public class MyActivity implements OnCancelListener { 
    /* ... */ 

    public void startDialog() { 
     ProgressDialog pd = ProgressDialog.show(
      MyActivity.this, // Context 
      "Progress Title", // title for dialog 
      "Progress Message", // message for dialog 
      true,    // indeterminate? 
      true,    // cancellable? 
      this    // onCancelListener() 
     ); 
    } 

    @Override 
    public void onCancel(DialogInterface dialog) { 
     // the user canceled out of the load dialog (hit the 'back' button)... do something here 
    } 
} 
+0

Danke behoben ... aber in ANdroid1.5 VirtualKeypad? Wie kann ich mit diesem umgehen? ... – arams

Verwandte Themen