You're calling getDialog()
too early in the DialogFragment
's life cycle.
getDialog()
simply returns the private variable mDialog
from the DialogFragment
.
When a DialogFragment
is instantiated mDialog
is null, and then it gets set when onCreateDialog
is fired inside getLayoutInflater(Bundle savedInstanceState)
, so you have to call getDialog
after onCreateDialog
.
For example, the order of some common methods called is onCreate
, onCreateDialog
, and onCreateView
, onStart
. So, you can call getDialog
and have it return something in onCreateView
or onStart
, but not in onCreate
or onCreateDialog
.
Even though onStart
is called called when the Fragment is visible to the user
, adjusting the layout of the fragment at that point looks fine.... for example setting the width and height using getDialog().getWindow().setLayout(..., ...);
doesn't make the fragment appear to change size, but just appears to have the newly set size.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…