如何禁用外部触摸以隐藏DialogPreference

Jac*_*rky 2 android dialog-preference

我正在开发一个自定义DialogPreference.

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

我知道Dialog有setCanceledOnTouchOutside(boolean cancel)我需要的方法,但DialogPreference没有.

onBindDialogView我尝试:

getDialog().setCanceledOnTouchOutside(true);
Run Code Online (Sandbox Code Playgroud)

但是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);

    }

}
Run Code Online (Sandbox Code Playgroud)

and*_*rew 5

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

@Override
protected void onPrepareDialogBuilder(Builder builder) {
    super.onPrepareDialogBuilder(builder);
    builder.setCancelable(false);
}
Run Code Online (Sandbox Code Playgroud)