0

I am using dialog fragment, when I click on fab i will display the dialog , but I have to setCanceledOnTouchOutside when I do the app is crashing !

so , how I can stop touch out side

 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");

        }});

and i got this error

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$2.onClick(MainActivity.java:94)

line 94 is add.getDialog().setCanceledOnTouchOutside(false);

2 Answers2

0

Try this:

 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();

Details Android click event outside a dialog

Community
  • 1
  • 1
Ashish Rawat
  • 5,541
  • 1
  • 20
  • 17
0

Set setCanceledOnTouchOutside(true) in side oncreatedialog() method.

Example

@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;
    }
Sunil Kumar Sahoo
  • 53,011
  • 55
  • 178
  • 243