我有一个AlertDialog dlgDetails从另一个显示AlertDialog dlgMenu。如果用户按下dlgDetails中的“后退”按钮,我希望能够再次显示dlgMenu,如果他在对话框外按下,则仅退出对话框。
我认为最好的方法是onBackPressed为dlgDetails覆盖,但是我不确定该怎么做,因为必须使用Builder间接创建AlertDialogs。
我正在尝试创建派生的AlertDialog(public class AlertDialogDetails extends AlertDialog { ...}),但是我想我还必须AlertDialog.Builder在该类中进行扩展以返回AlertDialogDetails,但是没有更简单的方法吗?如果没有,您将如何覆盖Builder?
AlertDialog(public class AlertDialogDetails extends AlertDialog { ...}
AlertDialog.Builder
最后,我在对话框中添加了一个键侦听器,以侦听Back键。onBackPressed()虽然没有覆盖的优雅,但是它可以工作。这是代码:
dlgDetails = new AlertDialog.Builder(this) .setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled()) { dialog.cancel(); showDialog(DIALOG_MENU); return true; } return false; } }) //(Rest of the .stuff ...)