简体   繁体   中英

How to create Yes/NO Alert Dialog in Fragment in Android

This is my codes that I commented what I need. I tries some codes but it seems not compatible with Fragment.

public class main extends Fragment {

    ImageButton imagebutton;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.main, container, false);

        imagebutton = (ImageButton) rootView.findViewById(R.id.im);

        imagebutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //Open Yes/No Dialog

                //if Yes do something
            }
        });

    }
}

Try this method:

   private void createAndShowAlertDialog() {
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
     builder.setTitle("My Title");
     builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) {
              //TODO
              dialog.dismiss();
         }
     });
     builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) {
              //TODO
              dialog.dismiss();
         }
     });
     AlertDialog dialog = builder.create();
     dialog.show();
   }
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?");
    alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(getApplicationContext(), "CLick-Click!!",Toast.LENGTH_LONG).show();
        }
    });

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


OR
Try using this snippet:

AlertDialog.Builder mDialog = new AlertDialog.Builder(MyClassNane.this);
mDialog.setTitle("Title");
mDialog.setMessage("Do you want to delete ?");
mDialog.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {
                    Toast.makeText(getApplicationContext(),
                    "Click-Click!!",Toast.LENGTH_LONG).show();
                }
                dialog.cancel();
            }
        });

mDialog.setNegativeButton("No",
        new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog,
                    int which) {
                dialog.cancel();
            }
        });
AlertDialog alert = mDialog.create();
alert.show();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM