我创建了一个正常运行的AlertDialog。如果我按下它就会消失:
1)退出键盘按钮或
2)使用鼠标的后退按钮
为了使其在上述条件下保持专注,我添加了“.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();
环境:XP Professional上的Android 4.0。
答案 0 :(得分:115)
this是您的完整代码吗?然后请更改您的代码,以便像这样设置setCancelable(false)
void showDialog() {
DialogFragment newFragment = MyAlertDialogFragment.newInstance(
R.string..alert_dialog_two_buttons_title);
newFragment.setCancelable(false);
newFragment.show(getFragmentManager(), "dialog");
}
答案 1 :(得分:11)
您的对话框设置为不可取消,但您的主机片段仍可取消。使用setCancelable(false)
设置片段。
答案 2 :(得分:7)
另一个工作示例:
第1步
创建课程:
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()
答案 3 :(得分:3)
dialog.setCanceledOnTouchOutside(false);
setCanceledOnTouchOutside(boolean)
设置在窗口边界外触摸时是否取消此对话框。如果设置为true,则对话框设置为可取消(如果尚未设置)。
答案 4 :(得分:1)
实现“ setCancelable”的最简单方法是在活动中调用对话框时实现相同的方法。这样,而不是直接在对话框类中。
Dialog myDialog = new Dialog();
myDialog.setCancelable( false );
myDialog.show( getSupportFragmentManager(),"dialog" );
return true;
答案 5 :(得分:0)
在Kotlin中使对话框不可关闭
dialog.isCancelable =false
答案 6 :(得分:0)
根据您的AlertDialog
类型,您可以:
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.MyAlertDialogLayout).setCancelable(false);
或
AlertDialog alertDialog = builder.create();
alertDialog.setCancelable(false);
答案 7 :(得分:0)
在DialogFragment中
已使用:-
dialog.setCanceledOnTouchOutside(false)