2012-04-04 66 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组的那些属性。

这两个提到的地方的目的是,它允许设置与实际显示,从而使事情方便分开。