如何停止在对话框片段中的触摸侧

how to stop on Touch out side in dialog fragment

我正在使用对话框片段, 当我点击 fab 时,我会显示对话框,但是当我这样做时我必须 setCanceledOnTouchOutside 应用程序崩溃了!

所以,我怎样才能停止触摸侧面

 fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FragmentManager fm = getSupportFragmentManager();
            addAction add = new addAction();
            add.getDialog().setCanceledOnTouchOutside(false);


            add.show(fm,"fragment_edit_name");

        }});

我收到了这个错误

09-26 13:06:21.997 2890-2890/com.example.todo.todoapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            java.lang.NullPointerException
                                                                                at com.example.todo.todoapplication.MainActivity.onClick(MainActivity.java:94)

第 94 行是 add.getDialog().setCanceledOnTouchOutside(false);

试试这个:

 Window window = dialog.getWindow();
        window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

        dialog.show();

详情 Android click event outside a dialog

oncreatedialog() 方法中设置 setCanceledOnTouchOutside(true)

例子

@Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog = new Dialog(getActivity(), getThemeId());        
        final View view = getActivity().getLayoutInflater().inflate(
                R.layout.settings, null);
        dialog.setTitle(getResources().getString(R.string.action_settings));
        dialog.setCanceledOnTouchOutside(true);
        return dialog;
    }