Android:如何在AlertDialog中重写onBackPressed()?

发布于 2021-01-30 16:07:25

我有一个AlertDialog dlgDetails从另一个显示AlertDialog dlgMenu。如果用户按下dlgDetails中的“后退”按钮,我希望能够再次显示dlgMenu,如果他在对话框外按下,则仅退出对话框。

我认为最好的方法是onBackPressed为dlgDetails覆盖,但是我不确定该怎么做,因为必须使用Builder间接创建AlertDialogs。

我正在尝试创建派生的AlertDialog(public class AlertDialogDetails extends AlertDialog { ...}),但是我想我还必须AlertDialog.Builder在该类中进行扩展以返回AlertDialogDetails,但是没有更简单的方法吗?如果没有,您将如何覆盖Builder?

关注者
0
被浏览
771
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    最后,我在对话框中添加了一个键侦听器,以侦听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 ...)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看