AlertDialog dismiss 和 cancel方法的區別


 Dialog類中找到了dismiss和cancel方法的實現。 看dismiss的源碼:

 

 public void cancel() {
        if (mCancelMessage != null) {
            
            // Obtain a new message so this dialog can be re-used
            Message.obtain(mCancelMessage).sendToTarget();
        }
        dismiss();
    }

 

在cancel方法中調用了dismiss方法。 那么:mCancelMessage是什么?

    private Message mCancelMessage; // 這是源碼中的聲明

 public void 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變量有作用,那么cancel 比dismiss要多做一些任務,否則dismiss和cancel等同

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM