gpt4 book ai didi

Android:触摸外部时如何关闭 DatePicker DialogFragment?

转载 作者:行者123 更新时间:2023-12-02 18:35:59 26 4
gpt4 key购买 nike

我有一个扩展 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? 。我在这里缺少什么?

最佳答案

如果要关闭扩展 DialogFragment 的 Dialog,请编写

setCancelable(true);

在onCreateView中。当您触摸外部时,该对话框将关闭。

示例代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setCancelable(true);
return super.onCreateView(inflater, container, savedInstanceState);
}

关于Android:触摸外部时如何关闭 DatePicker DialogFragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59825258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com