2012-04-04 3 views
6

Почему бы один использовать AlertDialog.Builder класс, а не методы, непосредственно доступной AlertDialog, почему, например, использовать AlertDialog.Builder.setCancellable, а не AlertDialog.setCancellable? Неужели это случай избыточности?AlertDialog против AlertDialog.Builder

ответ

5

Потому что AlertDialog.setCancellable возвращает void и AlertDialog.Builder.setCancellable возвращает AlertDialog.Builder.

Это означает, что строитель позволяет вам сгруппировать кучу настроек с помощью немного меньшей многословности. Это просто класс удобства

+1

Так что это «вроде», как операторы istream/ostream на C++? Это звучит разумно – stephenfin

0

Я думаю, что фабричные методы просто более удобны.

7

AlertDialog позволяет вам показывать диалог над вашей деятельностью/фрагментом. Он обычно используется для запроса пользователю взаимодействия, в том числе нескольких кнопок или для чего-то чего-то известить.

AlertDialog.Builder - внутренний статический класс AlertDialog, который позволяет вам быстро настроить диалог с помощью его удобных методов. Его просто как вспомогательный класс для AlertDialog. Он используется для вызова методов в цепочке.

+0

Но кто это помогает? Его цель состоит в том, чтобы упростить все в одном длинном заявлении, а не в нескольких отдельных заявлениях (задание названия и т. Д.), Или же оно предлагает больше функциональности? – stephenfin

+0

да, его для удобства вызвать методы в цепочке тоже – waqaslam

+0

@stephenfin фактически классы no-builder предназначены не только для вызовов метода цепочки. они очень часто действуют как фабрика, которая обеспечивает разумные значения по умолчанию и параметры настройки. также очень важно, чтобы продукт ('AlertDialog') был неизменным/абстрактным, в то время как заводские аналоги не могут значительно облегчить процесс создания продукта. возьмите, например, 'StringBuilder' или' ProcessBuilder'. – andr

1

AlertDialog.Builder делает настройки атрибутов, таких как setTitle() или setMessage() и не отображаются пользователю.

AlertDialog является тот, который отображает те атрибуты, которые были множество в AlertDialog.Builder.

Целью иметь как упомянутое, так и другое, является то, что он позволяет устанавливать настройки отдельно от фактического отображения, что в свою очередь делает удобной вещь.

Смежные вопросы