android - 对话框上的后退按钮正在取消对话框,即使我有一个监听器

标签 android android-alertdialog

我有一个对话框显示,我希望在按下后退按钮时要求用户确认他想在取消生效之前取消对话框。这是我的代码:

dialog.setOnCancelListener(new OnCancelListener(){

            @Override
            public void onCancel(DialogInterface arg0) {
                AlertDialog.Builder builder = new AlertDialog.Builder(dialog.getContext());
                builder.setMessage( "Are you sure you want to cancel?")
                       .setCancelable(false)
                       .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface diag, int id) {
                               diag.dismiss();
                               dialog.dismiss();

                           }
                       })
                       .setNegativeButton("No", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface diag, int id) {
                                diag.cancel();
                           }
                       });
                AlertDialog alert = builder.create();
                alert.show();               
            }

        });
        dialog.show();

问题是,当按下后退按钮时,我当前的对话框被取消,然后显示我的“确认消息”。如何确保在用户确认之前不会取消对话框?

最佳答案

onCancel 在对话框被取消时调用,这就是对话框被取消后显示确认消息的原因。您应该为您的对话框setOnKeyListener

dialog.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Toast.makeText(Activity.this, "back pressed", Toast.LENGTH_SHORT).show();
            return true;
        }
        return false;
    }
});

关于android - 对话框上的后退按钮正在取消对话框,即使我有一个监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701040/

相关文章:

java - `canvas.drawCircle`方法的半径是dp单位吗?

java - Android 单选按钮自定义属性

android - 本地 aar 库的传递依赖

java - 在 ListView 中使用 List<Custom_Class>

android - 第一次按下按钮时关闭android中的警报对话框

android - 尝试在 builder.setPositiveButton 的 onClick() 方法中放置一些代码时获取 'Cannot resolve method ' addOnCompletionListener( )'.......'

android - 带图标的 AlertDialog MultiChoiceItems

java - Parcel//ArrayList 的问题

java - for 循环内的 AlertDialog

java - 如何将我的方法从我的 Activity 放置或发送到另一个类来调用它?