我正在开发自定义DialogPreference。
当用户在对话框外点击时,它会被取消,我需要避免这种情况。
我知道Dialog的方法setCanceledOnTouchOutside(boolean cancel)
是我需要的,但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);
}
}
答案 0 :(得分:5)
您可以在显示对话框之前访问AlerDialog.Builder
。在那里,您可以指定builder.setCancelable(false)
。可能以这种方式你可以实现欲望行为。
@Override
protected void onPrepareDialogBuilder(Builder builder) {
super.onPrepareDialogBuilder(builder);
builder.setCancelable(false);
}