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,则对话框设置为可取消(如果尚未设置)。