2012-04-04 21 views
6

Tại sao một người sử dụng lớp AlertDialog.Builder thay vì các phương pháp có sẵn trực tiếp cho AlertDialog, Ví dụ: tại sao sử dụng AlertDialog.Builder.setCancellable thay vì AlertDialog.setCancellable? Chắc chắn đây là một trường hợp dự phòng?AlertDialog vs AlertDialog.Builder

Trả lời

5

AlertDialog.setCancellable trả về khoảng trống và AlertDialog.Builder.setCancellable trả về số AlertDialog.Builder.

Điều này có nghĩa là trình tạo cho phép bạn chuỗi các cài đặt với độ chi tiết ít hơn một chút. Nó chỉ là một lớp tiện

+1

Vì vậy, nó 'loại' giống như các nhà khai thác istream/ostream trong C + +? Nghe có vẻ hợp lý – stephenfin

0

Tôi nghĩ rằng phương pháp nhà máy chỉ mang tính thuận lợi hơn.

7

AlertDialog cho phép bạn hiển thị hộp thoại phía trên hoạt động/đoạn của bạn. Nó thường được sử dụng để nhắc người dùng cho tương tác bao gồm vài nút hoặc thông báo cho một cái gì đó.

AlertDialog.Builder là lớp tĩnh bên trong của AlertDialog cho phép bạn nhanh chóng thiết lập hộp thoại bằng các phương pháp tiện dụng. Nó giống như một lớp trợ giúp cho AlertDialog. Nó được sử dụng để gọi các phương thức trong một chuỗi.

+0

Nhưng ai sẽ giúp bạn? Là mục đích của nó chỉ để súc tích mọi thứ thành một tuyên bố dài hơn là nhiều câu cá nhân (thiết lập tiêu đề vv?) Hay nó cung cấp nhiều chức năng hơn theo một cách nào đó? – stephenfin

+0

có, để thuận tiện cho việc gọi các phương thức trong một chuỗi quá – waqaslam

+0

@stephenfin thực sự không có - lớp trình xây dựng không chỉ dành cho các cuộc gọi phương thức chuỗi. chúng thường hoạt động như một nhà máy cung cấp các giá trị mặc định hợp lý và các tùy chọn tùy chỉnh. cũng rất phổ biến đối với sản phẩm ('AlertDialog') là không thay đổi/trừu tượng trong khi các đối tác của nhà máy không làm giảm đáng kể quá trình tạo sản phẩm. lấy ví dụ 'StringBuilder' hoặc' ProcessBuilder'. – andr

1

AlertDialog.Builder hiện các thiết lập của các thuộc tính như setTitle() hoặc setMessage() và được không được hiển thị cho người dùng.

AlertDialog là một trong những điều đó màn những thuộc tính mà đã bộ trong AlertDialog.Builder.

Mục đích của cả hai như được đề cập ở đâu đó là nó cho phép các thiết lập được thực hiện riêng biệt với hiển thị thực tế mà lần lượt làm cho điều thuận tiện.