AlertDialog的setCancelable(false)方法不起作用

我创build了一个AlertDialog工作正常。 它正在消失,如果我按:
1)退出键盘button或
2)使用鼠标后退button
为了使它保持专注于上述条件,我在创build时添加了“.setCancelable(false)”语句。 但是,我仍然看到对话消失。 哪里有问题? 请帮忙。

已添加代码:

return new AlertDialog.Builder(getActivity()) .setIcon(R.drawable.alert_dialog_icon) .setTitle(title) .setCancelable(false) .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { ((FragmentAlertDialog)getActivity()).doPositiveClick(); } } ) .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { ((FragmentAlertDialog)getActivity()).doNegativeClick(); } } ) .create(); 

Env:XP Professional上的Android 4.0。

这是你的完整代码吗? 那么请改变你的代码设置setCancelable(false)像这样

 void showDialog() { DialogFragment newFragment = MyAlertDialogFragment.newInstance( R.string..alert_dialog_two_buttons_title); newFragment.setCancelable(false); newFragment.show(getFragmentManager(), "dialog"); } 

您的对话框设置为不可取消,但您的主机片段仍然可以取消。 用setCancelable(false)设置你的片段。

另一个工作例子:

步骤1

创build课程:

 public class DialogActivity extends android.app.DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(R.string.myMessage); setCancelable(false); return builder.create(); } } 

第2步

将方法添加到您的Activity

 private boolean showDialog() { FragmentManager manager = getFragmentManager(); DialogActivity dialogActivity; dialogActivity = new DialogActivity(); dialogActivity.show(manager, "DialogActivity"); return true; } 

第3步

当需要显示对话框时调用showDialog()

 dialog.setCanceledOnTouchOutside(false); 

setCanceledOnTouchOutside(boolean)

设置在窗口边界之外触摸时是否取消该对话框。 如果设置为true,则对话框设置为可取消(如果尚未设置)。