【发布时间】:2020-05-06 13:53:44
【问题描述】:
我有一个扩展 DialogFragment 的工作 DatePickerFragment。我在 onCreateDialog() 中设置了一个 DatePickerDialog,然后尝试添加:
"picker.setCanceledOnTouchOutside(true);"
我正在使用 Android 8.0 Oreo 的设备上进行测试,在 DatePicker 对话框之外触摸时没有任何反应。我使用 androidx.appcompat.app.AppCompatActivity 作为我的 BaseActivity 和 androidx.fragment.app.DialogFragment 作为 DialogFragment;
代码:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
DatePickerDialog picker = new DatePickerDialog(getActivity(),this,year,month,day);
**picker.setCanceledOnTouchOutside(true);**
return picker;
这是创建 Fragment 的 Activity 代码:
DatePickerFragment newFragment = new DatePickerFragment();
// tried the below also, with no luck
**newFragment.setCancelable(true);**
newFragment.show(getSupportFragmentManager(), "datePicker");
我还在 DialogFragment 中尝试了以下方法,但也没有运气:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
getDialog().setCanceledOnTouchOutside(true);
...
}
和:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (getDialog() != null) {
getDialog().setCanceledOnTouchOutside(true);
}
return super.onCreateView(inflater, container, savedInstanceState);
}
我参考了这篇文章以获得可能的答案:How to dismiss a DialogFragment when pressing outside the dialog?。我在这里错过了什么?
【问题讨论】:
-
您好,您可以发布源代码以显示日期选择器对话框吗?
-
我做了,它在 onCreateDialog() 中创建,如上所示。你还有什么要找的吗?
-
嗨@AJW,我的意思是你调用DialogFragment的语句。某事。喜欢
myDatePickerFragment.show(getSupportFragmenetManager(), "tag") -
啊,好的,我现在添加,上面。
-
添加一个在整个屏幕上展开的父布局。在父级上添加一个单击侦听器,当单击父级时关闭对话框
标签: android android-dialogfragment android-datepicker