This is a good demonstration of creating a versatile UI.
Two suggestions to improve it. First, QuickDialog would be best as a subclass of Dialog.
Second, dialogs work best if they are nested inside a DialogFragment. The dialog is lifecycle aware.
For example, QuickDialogFragment could be a subclass of DialogFragment. QuickDialogFragment is abstract.
Subclasses of QuickDialogFragment override the methods of QuickDialogFragment. For example, there could be an abstract method which returns the positive button listener. Other abstract methods would exist representing the properties of the QuickDialog.
Every concrete subclass of QuickDialogFragment represents a unique realization of the QuickDialog. Each realization suits the client’s specific requirements.