android - 在显示 DialogFragment 时禁用基础 View 上的触摸事件

标签 android dialog android-dialogfragment

我有一个 PreferenceFragment,当我设置所有需要的东西时,我会显示一个 DialogFragment 信号加载进度。问题是,如果我点击底层 fragment 中的首选项元素,点击事件仍在处理中。

有没有办法在我的 DialogFragment 显示时禁用事件?

我的 DialogFragment 是从 PreferenceFragment 本身构建和启动的:

 final DialogFragment fragment = new DialogFragment() {
                @Override
                public Dialog onCreateDialog(final Bundle savedInstanceState) {
                    final Dialog dialog = new AlertDialog.Builder(getActivity())
                            .setTitle(R.string.dialog_hide_user_title)
                            .setMessage(R.string.dialog_hide_user_summary)
                            .setPositiveButton(R.string.dialog_hide_user_confirm_button, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(final DialogInterface dialogInterface, final int i) {
                                    callback.onPositiveClick();
                                }
                            })
                            .setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(final DialogInterface dialogInterface, final int i) {
                                    callback.onNegativeClick();
                                }
                            })
                            .create();
                    dialog.setCanceledOnTouchOutside(false);
                    return dialog;
                }
            };
fragment.show(getFragmentManager(), "test");

最佳答案

尝试

setCancelable(false);
dialog.setCanceledOnTouchOutside(false);

希望这有帮助:)

完整代码:

final DialogFragment fragment = new DialogFragment() {
                @Override
                public Dialog onCreateDialog(final Bundle savedInstanceState) {
                    final Dialog dialog = new AlertDialog.Builder(getActivity())
                            .setTitle(R.string.dialog_hide_user_title)
                            .setMessage(R.string.dialog_hide_user_summary)
                            .setPositiveButton(R.string.dialog_hide_user_confirm_button, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(final DialogInterface dialogInterface, final int i) {
                                    callback.onPositiveClick();
                                }
                            })
                            .setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(final DialogInterface dialogInterface, final int i) {
                                    callback.onNegativeClick();
                                }
                            })
                            .create();
                    setCancelable(false);
                    dialog.setCanceledOnTouchOutside(false);
                    return dialog;
                }
            };
fragment.show(getFragmentManager(), "test");

关于android - 在显示 DialogFragment 时禁用基础 View 上的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793099/

相关文章:

android - dialogFragment 关闭时刷新 fragment

android - 从 CustomView 中打开 DialogFragment

android - 如何将图像从 Android 应用程序发送到服务器?

Symfony PHP 中的 JavaScript 确认(..) 等效项

JQuery Dialog 的 CSS 内容在换页时会保留

c++ - 在 C++ mfc 对话框中帮助

android - 使用 NetworkInfo 程序时总是报告网络不可用

android - 如何在 Android 中的多个 Activity 之间切换

Android 注释和 MonkeyTalk?

android - Android中DialogFragment和FragmentActivity之间的通信