DialogFragment.getDialog returns null
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.
Try calling executePendingTransactions() from the available FragmentManager.
dialogFragment = new DialogFragment();
...
dialogFragment.show(mFragmentActivity.getSupportFragmentManager(), "Dialog");
mFragmentActivity.getSupportFragmentManager().executePendingTransactions();
Dialog d = dialogFragment.getDialog()
...