Wednesday 3 August 2016

android - DialogFragment advantages over AlertDialog




When developing an Android app, I've read that it's recommended to use DialogFragment instead of using directly an AlertDialog to show alerts and confirmations.



This is done, for example, on DialogFragment's Documentation: http://developer.android.com/reference/android/app/DialogFragment.html




People also say they prefer this here:
Android DialogFragment vs Dialog



I would like to know the advantages of this approach, since the code becomes more complex.



Thanks


Answer



Use DialogFragment over Dialog:








  • Since the introduction of API level 13:



    the showDialog method from Activity is deprecated.
    Invoking a dialog elsewhere in code is not advisable since you will have to manage the dialog yourself (e.g. orientation change). Not using the showDialog will result in occasional exceptions, the dialog is not linked to any Activity.



    Note about showDialog:





    reference of Dialog: Activities provide a facility to manage the creation, saving and restoring of dialogs. See onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), and dismissDialog(int). If these methods are used, getOwnerActivity() will return the Activity that managed this dialog.



  • Difference between DialogFragment and AlertDialog



    One thing that comes to mind when reading your question. Are they so much different?
    A DialogFragment is pretty similar to a Dialog, it's just wrapped inside a fragment. From Android reference regarding DialogFragment:




    A DialogFragment is a fragment that displays a dialog window, floating on top of its
    activity's window. This fragment contains a Dialog object, which it

    displays as appropriate based on the fragment's state. Control of the
    dialog (deciding when to show, hide, dismiss it) should be done
    through the API here, not with direct calls on the dialog.



  • Other notes




    • Fragments are a natural evolution in the Android framework due to the diversity of devices with different screen sizes.

    • DialogFragments and Fragments are made available in the support library which makes the class usable in all current used versions of Android.




No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...