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
}
}
leitet mich, mein Problem zu vervollständigen ... – arams
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