Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何禁用外部触摸以隐藏对话框首选项_Android_Dialog Preference - Fatal编程技术网

Android 如何禁用外部触摸以隐藏对话框首选项

Android 如何禁用外部触摸以隐藏对话框首选项,android,dialog-preference,Android,Dialog Preference,我正在开发一个自定义对话框 当用户在对话框外单击时,它将被取消,我需要避免这种情况 我知道Dialog有方法setcanceledontouchout(布尔取消)这正是我所需要的,但DialogPreference没有 在onBindDialogView中,我尝试: getDialog().setCanceledOnTouchOutside(true); 但是getDialog()返回null 我该怎么办?有人能帮我吗 这是我的班级: public class UpdatePreference

我正在开发一个自定义对话框

当用户在对话框外单击时,它将被取消,我需要避免这种情况

我知道Dialog有方法
setcanceledontouchout(布尔取消)
这正是我所需要的,但DialogPreference没有

onBindDialogView
中,我尝试:

getDialog().setCanceledOnTouchOutside(true);
但是
getDialog()
返回
null

我该怎么办?有人能帮我吗

这是我的班级:

public class UpdatePreference extends DialogPreference implements View.OnClickListener{


    public UpdatePreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        setPersistent(false);
        setDialogLayoutResource(R.layout.update_dialog_layout);
        setPositiveButtonText("");
        setNegativeButtonText("");
    }

    @Override
    protected void onBindDialogView(View view) {
        super.onBindDialogView(view);   
        //init my components
    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);

    }

}

在显示对话框之前,您可以访问
AlerDialog.Builder
。您可以在那里指定
builder.setCancelable(false)
。也许通过这种方式你可以实现欲望行为

@Override
protected void onPrepareDialogBuilder(Builder builder) {
    super.onPrepareDialogBuilder(builder);
    builder.setCancelable(false);
}

这太棒了,这就是我一直在寻找的!非常感谢!:)回答得很好。