Android: How to override onBackPressed() in AlertDialog?

后端 未结 4 1479
[愿得一人]
[愿得一人] 2021-02-05 04:30

I have an AlertDialog dlgDetails which is shown from another AlertDialog dlgMenu. I would like to be able to show dlgMenu again if the user presses the

4条回答
  •  眼角桃花
    2021-02-05 05:09

    I finally added a key listener to my dialog to listen to the Back key. Not as elegant as overriding onBackPressed() but it works. Here is the code:

    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 ...)
    

    For answer in Kotlin see here:Not working onbackpressed when setcancelable of alertdialog is false

提交回复
热议问题