title: AndroidRuntimeException:requestFeature() must be called before adding content in DialogFragment
body: <p>I understand this question have been asking many times here but after spending the last 1,5 hour reading and trying to sort out my issue, I can't.</p>
  
  <p><strong>Problem statement:</strong></p>
  
  <p>When calling <code>setStyle</code> method in <code>DialogFragment</code> i get the RuntimeException error stated in the title.</p>
  
  <p>This is my original code, which does not throws this exception:</p>
  
  <pre><code>public class MapDialogFragment extends DialogFragment
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Holo);
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          view = inflater.inflate(R.layout.maps_dialog, container, false);
          return view;
      }
  }
  </code></pre>
  
  <p>Now, I have just added ImmersiveMode throughout my application. As some of you may know, the immersive mode is lost when showing Dialogs, so one must override these fragments and set appropriate flags so that the mode is kept. I have successfully accomplished this - it works. But, I have to comment out line: <code>setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Holo);</code>, so I am losing my dialog's style and this is the problem.</p>
  
  <p>Having a closer look at the <code>setStyle</code> method in the DialogFragment, I can't really see how <code>requestFeature()</code> is being invoked:</p>
  
  <pre><code>public void setStyle(int style, int theme) {
          mStyle = style;
          if (mStyle == STYLE_NO_FRAME || mStyle == STYLE_NO_INPUT) {
              mTheme = com.android.internal.R.style.Theme_DeviceDefault_Dialog_NoFrame;
          }
          if (theme != 0) {
              mTheme = theme;
          }
      }
  </code></pre>
  
  <p>Finally, this is my DialogFragment class where the exception is happening. Note the <code>getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);</code> and also the clearFlag, which were necessary to have the ImmersiveMode working (hopefully this will be useful for someone):</p>
  
  <pre><code>public class MapDialogFragmentv2 extends DialogFragment {
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          //I have also tried the code here, before the super.OnCreate but to no avail
          //setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Holo);
          super.onCreate(savedInstanceState);
      }
  
      @Override
      public Dialog onCreateDialog(final Bundle savedInstanceState) {
          MyDialog mDialog = new MyDialog(getActivity());
  
          mDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
  
          view = getActivity().getLayoutInflater().inflate(R.layout.maps_dialog, null);
  
          //Line below throws exception. Needs to be commented out
          setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Holo);
          mDialog.setContentView(view);
  
          return mDialog;
      }
  
      public class MyDialog extends Dialog {
          public MyDialog(Context context) {
              super(context);
              getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
              getWindow().getDecorView().setSystemUiVisibility(MainActivity.getImmersiveModeFlags());
          }
  
          @Override
          public void show() {
              getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
              super.show();
          }
      }
  }
  </code></pre>
  
  <p>I have also tried using a mix of <code>onCreate</code>, <code>onCreateView</code> and <code>onCreateDialog</code> but it didn't work. I also read here at Stackoverflow someone commenting that it was not a good idea to have onCreateView and onCreateDialog at the same time.</p>
  
  <p>And also tried adding the style to my xml layout itself, but also didn't work:</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/lib/com.google.android.gms.plus"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="@android:color/transparent"
      style="@android:style/Theme.Holo.Dialog" &gt;
  </code></pre>
  
  <p>Thank you</p>