我有一个正在使用主题的活动。对话框样式,使其成为另一个活动上方的浮动窗口。但是,当我在对话框窗口外(在后台活动上)单击时,对话框关闭。我怎样才能阻止这种行为?


当前回答

也可以分配不同的动作实现onCancelListener:

alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){                   
    @Override
    public void onCancel(DialogInterface dialogInterface) {
        //Your custom logic
    } 
});

其他回答

        alert.setCancelable(false);
        alert.setCanceledOnTouchOutside(false);

我想这对你有帮助。这对我很管用

我也面临着同样的问题。为了处理它,我设置了一个对话框的OntouchListener,在里面什么都不做。但旋转屏幕时对话框也会消失。为了解决这个问题,我设置了一个变量来告诉我对话框是否正常解散。然后我设置了一个OnDismissListener到我的对话框,在里面我检查变量。如果对话框正常解散,我什么都不做,否则我再次运行对话框(并将他的状态设置为在我的情况下解散时)。

对我来说有用的是创建DialogFragment并将其设置为不可取消:

dialog.setCancelable(false);

我在onCreate()中使用这个,似乎可以在任何版本的Android上工作;在5.0和4.4上测试。x,不能在姜饼上测试,三星设备(Note 1运行GB)默认是这样的:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    {
        setFinishOnTouchOutside(false);
    }
    else
    {
        getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
    }

    super.onCreate(savedInstanceState);

使用这个代码,它为我工作

 AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
 alertDialog.setCancelable(false);