2012-04-04 7 views
6

perché uno utilizzare la classe AlertDialog.Builder piuttosto che i metodi di cui dispone direttamente AlertDialog, Per esempio, perché usare AlertDialog.Builder.setCancellable piuttosto che AlertDialog.setCancellable? Sicuramente questo è un caso di ridondanza?AlertDialog vs AlertDialog.Builder

risposta

5

Perché AlertDialog.setCancellable restituisce void e AlertDialog.Builder.setCancellable restituisce un AlertDialog.Builder.

Ciò significa che il builder consente di concatenare una serie di impostazioni con un po 'meno verbosità. E 'solo una classe di convenienza

+1

Quindi è "tipo" come gli operatori istream/ostream in C++? Sembra ragionevole – stephenfin

0

Penso che i metodi di fabbrica siano solo più convenienti.

7

AlertDialog consente di visualizzare una finestra di dialogo sopra l'attività/frammento. Di solito viene utilizzato per chiedere all'utente di interagire, inclusi pochi pulsanti o notifica di qualcosa.

AlertDialog.Builder è una classe statica interna di AlertDialog che consente di impostare rapidamente una finestra di dialogo con i suoi metodi pratici. È proprio come una classe di supporto per AlertDialog. È usato per chiamare i metodi in una catena.

+0

Ma chi aiuta? Il suo scopo è solo di conciliare tutto in una lunga dichiarazione piuttosto che in più affermazioni individuali (impostando il titolo ecc.) O offre in qualche modo più funzionalità? – stephenfin

+0

sì, è anche utile chiamare metodi in una catena – waqaslam

+0

@stephenfin in realtà no - le classi di builder non servono solo per concatenare le chiamate di metodo. spesso si comportano come una fabbrica che fornisce valori predefiniti e opzioni di personalizzazione ragionevoli. inoltre è molto comune che il prodotto ('AlertDialog') sia immutabile/astratto mentre le controparti di fabbrica non sono in grado di facilitare enormemente il processo di creazione del prodotto. prendi ad esempio 'StringBuilder' o' ProcessBuilder'. – andr

1

AlertDialog.Builder fa le impostazioni degli attributi quali setTitle() o setMessage() e stanno non visualizzate per l'utente.

AlertDialog è quella che visualizza tali attributi che sono stati impostato nel AlertDialog.Builder.

Lo scopo di avere entrambi come detto in qualche luogo è che consente di impostare le impostazioni separatamente dalla visualizzazione effettiva che a sua volta rende la cosa conveniente.