First, use the cancel method source code and annotation.
/** * Cancel the dialog. This is essentially the same as calling {@link #dismiss()}, but it will * also call your {@link DialogInterface.OnCancelListener} (if registered). */ public void cancel() { if (!mCanceled && mCancelMessage != null) { mCanceled = true; // Obtain a new message so this dialog can be re-used Message.obtain(mCancelMessage).sendToTarget(); } dismiss(); }
The cancel dialog box is essentially the same as disimss. However, cancel executes the dialoginterface. oncancellistener listener, provided that it has been registered.
Public void opendialog (view v) {alertdialog dialog; alertdialog. builder = new alertdialog. builder (this); builder. settitle ("title"); builder. setmessage ("difference between dismiss and cancel"); builder. setpositivebutton ("OK", new dialoginterface. onclicklistener () {@ override public void onclick (dialoginterface dialog, int which) {dialog. cancel () ;}}); builder. setnegativebutton ("cancel", new dialoginterface. onclicklistener () {@ override public void onclick (dialoginterface dialog, int which) {dialog. dismiss () ;}}); dialog = builder. create (); dialog. setoncancellistener (New dialoginterface. oncancellistener () {@ override public void oncancel (dialoginterface DIALOG) {toast. maketext (mainactivity. this, "setoncancellistener", toast. length_short ). show () ;}}); dialog. show ();}
Click OK to execute dialoginterface. oncancellistener (). The toast and close dialog box is displayed.