Android 我已将setCancelable设置为false,但对话框可以';不能作为模态窗口工作

Android 我已将setCancelable设置为false,但对话框可以';不能作为模态窗口工作,android,Android,我已将设置为可取消(false)。在我看来,代码将首先显示一个对话框窗口,单击OK按钮后对话框窗口将关闭 但事实上,代码直接关闭整个应用程序,而不显示对话框窗口 如何在关闭整个应用程序之前显示对话框 findViewById(R.id.btnClose).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { AlertDialog.Build

我已将设置为可取消(false)。在我看来,代码将首先显示一个对话框窗口,单击OK按钮后对话框窗口将关闭

但事实上,代码直接关闭整个应用程序,而不显示对话框窗口


如何在关闭整个应用程序之前显示对话框

   findViewById(R.id.btnClose).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {   
        AlertDialog.Builder builder = new Builder(SMSMain.this);
        builder.setMessage(getString(R.string.DeleteInContextPrompt));
        builder.setTitle(getString(R.string.Warning));
        builder.setCancelable(false);
        builder.setPositiveButton(getString(R.string.OK), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                //I won't add finish() here
            }
        });

        builder.create().show();

        finish();
    }
});     

是,因为
finish()您可以销毁活动。

使用dialog.dismis()
关闭对话框

是,因为
finish()您可以销毁活动。
使用dialog.dismis()
关闭对话框

/p>/finish();这是您在OnClick内的代码中编写的问题,它会使您的整个应用程序甚至在对话框之前关闭,如果您想在用户在对话框中单击OK后关闭应用程序,请在您的Posivive按钮的click事件内调用finish()

另外,请确保覆盖onBackPressed,以防用户按下后退按钮关闭活动时弹出对话框。

/p>/finish();这是您在OnClick内的代码中编写的问题,它会使您的整个应用程序甚至在对话框之前关闭,如果您想在用户在对话框中单击OK后关闭应用程序,请在您的Posivive按钮的click事件内调用finish()

另外,请确保覆盖onBackPressed,以防用户按下back按钮关闭活动时弹出对话框。

试试这个

findViewById(R.id.btnClose).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {   
        AlertDialog dialog;
        AlertDialog.Builder builder = new Builder(SMSMain.this);
        builder.setMessage(getString(R.string.DeleteInContextPrompt));
        builder.setTitle(getString(R.string.Warning));
        builder.setCancelable(false);
        builder.setPositiveButton(getString(R.string.OK), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                  dialog.dismiss(); 
                  finish();// call finish() to close this activity for OK click  
            }
        });

        dialog=builder.create();
        dialog.show();

       // finish();
    }
});     
试试这个

findViewById(R.id.btnClose).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {   
        AlertDialog dialog;
        AlertDialog.Builder builder = new Builder(SMSMain.this);
        builder.setMessage(getString(R.string.DeleteInContextPrompt));
        builder.setTitle(getString(R.string.Warning));
        builder.setCancelable(false);
        builder.setPositiveButton(getString(R.string.OK), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                  dialog.dismiss(); 
                  finish();// call finish() to close this activity for OK click  
            }
        });

        dialog=builder.create();
        dialog.show();

       // finish();
    }
});     

如何在关闭整个应用程序之前显示对话框。 试一试


如何在关闭整个应用程序之前显示对话框。 试一试