androiddialog-preference

How to disable outside touching to hide DialogPreference


i'm developing a custom DialogPreference.

When user clicks outside the dialog, it is cancelled and i need to avoid this.

I know that Dialog has method setCanceledOnTouchOutside(boolean cancel) that is what i need but the DialogPreference not.

in onBindDialogView i try:

getDialog().setCanceledOnTouchOutside(true);

but getDialog() returns null.

How can i do? Can someone help me?

This is my class:

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

    }

}

Solution

  • You can access AlerDialog.Builder before dialog will be shown. There you can specify builder.setCancelable(false). Probably in such way you can achieve desire behavior.

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