Simplest yes/no dialog fragment

后端 未结 4 895
無奈伤痛
無奈伤痛 2020-12-12 16:55

I\'d like to make a dialog fragment that asks \"Are you sure?\" with a \"yes/no\" reply.

I\'ve looked at the documentation and it\'s really verbose, go

4条回答
  •  -上瘾入骨i
    2020-12-12 17:34

    A DialogFragment is really just a fragment that wraps a dialog. You can put any kind of dialog in there by creating and returning the dialog in the onCreateDialog() method of the DialogFragment.

    Heres an example DialogFragment:

    class MyDialogFragment extends DialogFragment{
        Context mContext;
        public MyDialogFragment() {
            mContext = getActivity();
        }
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext);
            alertDialogBuilder.setTitle("Really?");
            alertDialogBuilder.setMessage("Are you sure?");
            //null should be your on click listener
            alertDialogBuilder.setPositiveButton("OK", null);
            alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    
    
            return alertDialogBuilder.create();
        }
    }
    

    To create the dialog call:

    new MyDialogFragment().show(getFragmentManager(), "MyDialog");
    

    And to dismiss the dialog from somewhere:

    ((MyDialogFragment)getFragmentManager().findFragmentByTag("MyDialog")).getDialog().dismiss();
    

    All of that code will work perfectly with the support library, by just changing the imports to use the support library classes.

提交回复
热议问题