1. 程式人生 > >Dialog 的cancel 和dismiss 方法

Dialog 的cancel 和dismiss 方法

然後在Dialog類中找到了dismiss和cancel方法的實現。重要看dismiss的原始碼:
Java程式碼
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; // 這是原始碼中的宣告
    然後再來看原始碼:
Java程式碼

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變數有作用,否則dismiss和cancel等同。

相關推薦

Dialogcancel dismiss 方法

然後在Dialog類中找到了dismiss和cancel方法的實現。重要看dismiss的原始碼: Java程式碼 public void cancel() {         if (mCancelMessage != null) {                          // Obtain a

Dialogcanceldismiss的區別總結

Dialog中cancel和dismiss的區別: AlertDialog繼承了Dialog,下面就以AlertDialog為例: 在cancle()方法中呼叫了dismiss()方法: publicvoid cancel() {          if (mCance

Android開發——diglog canceldismiss方法區別

get() 方法 null ref 變量 width align eight ora AlertDialog dismiss 和 cancel方法的區別 AlertDialog使用很方便,但是有一個問題就是:dismiss方法和cancel方法

Jquery EasyUI Dialog closedestroy方法

        在使用JQuery EasyUI做專案的時候,經常需要使用Dialog實現彈出框效果,但是在“檢視日常活動連結”的時候,有兩個模組呼叫的是同一個Dialog頁面,這個時候就出現頁面混亂情況,要麼就是Dialog內容無法開啟,其實這是Dialog的close和

ProgressDialog的hide()dismiss()方法

在使用ProgressDialog作為網路載入資料的請求過程中,當資料載入完成,筆者很自然的將ProgressDialog呼叫了hide()方法,在當前activity退出時,遇到問題了android.view.WindowLeaked: Activity co

Activiy或者Fragment 銷燬時,Dialog 的正確Dismiss方式測試方法

場景:Activity或者Fragment 中彈出一個 Dialog,幾秒後會 dismiss。平時測試沒遇到崩潰,但是崩潰平臺卻捕捉到如下錯誤java.lang.IllegalArgumentExc

(轉)Android 開發 對話方塊Dialog dismisshide方法的區別

原地址:https://www.pocketdigi.com/20120815/900.html dismiss和hide方法都可以隱藏對話方塊,在需要的時候也可以用show方法呼叫顯示。但是,這兩者是有區別的。 dismiss方法會釋放對話方塊所佔的資源,而hide

jQuery EasyUI中window/dialog 視窗摺疊展開方法(顯示)

在jQuery的EasyUI中新視窗或訊息框是通過class="easyui-window"和class="easyui-dialog"定義,並可以通過其collapsible、minimizable、maximizable、closable、closed分別控

ProgressDialog的dismiss方法cancel方法的區別

Dismiss this dialog, removing it from the screen. This method can be invoked safely from any thread. Note that you should not override this method to do c

Dialog.dismiss()方法無效的解決方法

在最近的專案中使用WebView載入網頁,開始時show載入框,結束時dismiss載入框,但是載入框不消失: private Dialog dialog; web.setWebViewCli

web測試中的測試點測試方法總結

動態 小數 圖片尺寸 提示信息 方便 margin style 容錯性 字符型 測試是一種思維,包括情感思維和智力思維,情感思維主要體現在一句俗語:思想決定行動上(要懷疑一切),智力思維主要體現在測試用例的設計上。具有了這樣的思想,就會找出更多的bug。 一、輸入框

函數中的私有變量特權方法

getc 單例 隱藏數據 需要 接口 返回對象 div 外部 his 定義   【1】【私有變量】  任何在函數中定義的變量,都可以認為是私有變量,因為不能在函數外部訪問這些變量。私有變量包括函數的參數、局部變量和在函數內部定義的其他函數   【2】【特權方法】  如果在函

[C#學習筆記之異步編程模式2]BeginInvokeEndInvoke方法 (轉載)

cti otf 函數返回 編程模式 catch 數值 gin 單線程 blog 為什麽要進行異步回調?眾所周知,普通方法運行,是單線程的,如果中途有大型操作(如:讀取大文件,大批量操作數據庫,網絡傳輸等),都會導致方法阻塞,表現在界面上就是,程序卡或者死掉,界面元素不動了,

jquery中prop()方法attr()方法的區別淺析

clas ttr over dex idt pro query selected accesskey jquery1.6中新加了一個方法prop(),一直沒用過它,官方解釋只有一句話:獲取在匹配的元素集中的第一個元素的屬性值。 大家都知道有的瀏覽器只要寫disabled,c

scroll()scrollTop()方法——實現電商網站中的電梯導航

窗口 css樣式 ram 每一個 最新 top index hid none 要想實現電商網站的電梯導航效果,首先需要了解以下知識點: jquery 事件 - scroll() 方法 對元素滾動的次數進行計數,當用戶滾動指定的元素時,會發生 scroll 事件。scroll

【設計模式】簡單工廠模式工廠方法模式

產生 for plm nbsp osc rbm play stp mage > 簡單工廠模式 顧名思義,此模式的設計結構是簡單的,核心是生產對象。 一般來說,運用工廠模式生產的對象應該是構建對象的過程比較復雜的,獲取構建對象的過程在日後可能發生變更的。 簡單工廠

小胖說事28------iOS中extern,staticconst差別使用方法

方法 string 文件 only 聲明 sans nbsp ring const 通俗的講: extern字段使用的時候,聲明的變量為全局變量,都能夠調用,也有這樣一種比較狹義的說法:extern能夠擴展一個類中的變量到還有一個類中;

python基礎2-靜態方法方法

變量 img 靜態 訪問 func title 改變 參數 code 1. 類方法 是類對象所擁有的方法,需要用修飾器@classmethod來標識其為類方法,對於類方法,第一個參數必須是類對象,一般以cls作為第一個參數(當然可以用其他名稱的變量作為其第一個參數,但是大部

forEachmapfor方法的區別

turn 而不是 ber num 遍歷數組 風格 cnblogs ron () 那麽接下來,我繼續做分析,為什麽更推薦用.map(),而不是.forEach()? 首先,.map()要比.forEach()執行速度更快。雖然我也說過執行速度不是我們需要考慮的主要因素,但是他

為什麽使用 Arrays.asList()得到的集合,使用remove( ) add( )方法會拋出unsupportedoperationexception(不支持操作異常)

操作 err move lan 16px exceptio operation amp span  這是由於:    Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。 Arrays$ArrayList