我设置了setCancelable(false)。在我看来,代码将首先显示一个对话框窗口,单击确定按钮后对话框窗口将关闭。
但事实上,代码直接关闭整个应用程序而不显示Dialog窗口。
如何在关闭整个应用程序之前显示Dialog?
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();
}
});
答案 0 :(得分:4)
试试这个,
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();
}
});
答案 1 :(得分:1)
如何在关闭整个应用程序之前显示Dialog。 尝试
public void onStop(){
super.onStop();
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();
}
});
}
答案 2 :(得分:0)
是的,因为finish();
您的活动遭到破坏。
使用dialog.dismis();
来关闭对话框
答案 3 :(得分:0)
// finish();你在OnClick中的代码中编写的这个问题就是问题,它使你的整个应用程序在对话之前关闭,如果你想在用户点击对话后关闭你的应用程序,在你的对话框中调用finish()内部点击事件按钮。
另外,请确保覆盖onBackPressed,以防您在用户预先选择后退按钮时弹出对话框以关闭您的动作。