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
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
Penso che i metodi di fabbrica siano solo più convenienti.
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.
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
sì, è anche utile chiamare metodi in una catena – waqaslam
@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
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.
Quindi è "tipo" come gli operatori istream/ostream in C++? Sembra ragionevole – stephenfin