2012-04-04 32 views
6

一個爲什麼要使用AlertDialog.Builder類,而不是直接的方法可用於AlertDialog, 例如,爲什麼要用AlertDialog.Builder.setCancellable而非AlertDialog.setCancellable?當然這是冗餘的情況?AlertDialog VS AlertDialog.Builder

回答

5

因爲AlertDialog.setCancellable返回void且AlertDialog.Builder.setCancellable返回AlertDialog.Builder

這意味着該構建器允許您鏈接一些設置,但少一些冗長。這只是一個方便的類

+1

所以它有點像'C++中的istream/ostream運算符?這聽起來很合理 – stephenfin 2012-04-04 19:39:59

0

我認爲工廠方法只是更方便。

7

AlertDialog允許您在活動/片段上方顯示一個對話框。它通常用於提示用戶進行交互,包括幾個按鈕或通知某事。

AlertDialog.Builder是內部靜態類AlertDialog的,它允許您快速建立其方便的方法的對話框。它就像AlertDialog的助手類。它用於調用鏈中的方法。

+0

但是誰幫忙?它的目的只是爲了將所有內容簡化成一個冗長的聲明而不是多個單獨的聲明(設置標題等?)還是以某種方式提供更多功能? – stephenfin 2012-04-04 19:37:43

+0

是的,它爲了方便起見也方便調用鏈中的方法 – waqaslam 2012-04-04 19:38:49

+0

@stephenfin實際上,no-builder類不僅僅是用於鏈接方法調用。他們往往像一個提供合理的默認值和定製選項的工廠。產品('AlertDialog')是不可變的/抽象的,而工廠同行則不是這樣可以極大地簡化創建產品的過程。以「StringBuilder」或「ProcessBuilder」爲例。 – andr 2013-02-04 02:26:19

1

AlertDialog.Builder做的屬性,如setTitle()setMessage()的設置,並不顯示給用戶。

AlertDialog是一個顯示其中已經在AlertDialog.Builder組的那些屬性。

這兩個提到的地方的目的是,它允許設置與實際顯示,從而使事情方便分開。