Dialog中cancel和dismiss的區別總結
阿新 • • 發佈:2018-12-31
Dialog中cancel和dismiss的區別:
AlertDialog繼承了Dialog,下面就以AlertDialog為例:
在cancle()方法中呼叫了dismiss()方法:
- publicvoid cancel() {
- if (mCancelMessage != null) {
- // Obtain a new message so this dialog can be re-used
- Message.obtain(mCancelMessage).sendToTarget();
- }
-
dismiss();
- }
-
mCancelMessage:
-
private Message mCancelMessage; // 原始碼中的宣告
- publicvoid setOnCancelListener(final OnCancelListener listener) {
- if (listener != null) {
- mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);
- } else {
-
mCancelMessage = null
- }
- }
- public void setCancelMessage(final Message msg) {
- mCancelMessage = msg;
- }
如果你在建立AlertDialog的時候呼叫了setOnCancelListener 這個mCancelMessage變數有作用,否則dismiss和cancel等同。
當使用cancel()的時候,則會同時呼叫你註冊的DialogInterface.OnCancelListener()這個方法。