title: Android java.lang.IllegalStateException in onRequestPermissionsResult()
body: <p>I am working with sd card and so trying to get permission in runtime. Here is the code:</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity implements FileListFragment.OnFragmentInteractionListener {
  
  private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 111;
  
  @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
              ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
          }
  
           ...................
           ................
      }
  
  @Override
      public void onRequestPermissionsResult(int requestCode,
                                             String permissions[], int[] grantResults) {
          switch (requestCode) {
              case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: {
                  // If request is cancelled, the result arrays are empty.
                  if (grantResults.length &gt; 0 &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  
                      FileListFragment fileListFragment = FileListFragment.newInstance(0);  // **Error line**
          getSupportFragmentManager().beginTransaction()
                  .add(R.id.fragment_container, fileListFragment)
                  .commit();
                  } else {
  
                      finish();
                  }
                  return;
              }
          }
      }
  
  .............................
  ..................................
  ..........................
  
  }
  </code></pre>
  
  <p>As soon as I am allow the permission it is throwing <strong>"Failure delivering result ResultInfo{who=@android:requestPermissions:, request=111, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.kaushik.fileexplorer/com.kaushik.fileexplorer.MainActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState"</strong>. Here is the details logcat:</p>
  
  <pre><code>08-23 16:49:29.497 3215-3215/com.kaushik.fileexplorer E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: com.kaushik.fileexplorer, PID: 3215
                                                                          java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=111, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.kaushik.fileexplorer/com.kaushik.fileexplorer.MainActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
                                                                              at android.app.ActivityThread.deliverResults(ActivityThread.java:3699)
                                                                              at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
                                                                              at android.app.ActivityThread.-wrap16(ActivityThread.java)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:148)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                           Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
                                                                              at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1533)
                                                                              at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1551)
                                                                              at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:696)
                                                                              at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:662)
                                                                              at com.kaushik.fileexplorer.MainActivity.onRequestPermissionsResult(MainActivity.java:76)
                                                                              at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:6553)
                                                                              at android.app.Activity.dispatchActivityResult(Activity.java:6432)
                                                                              at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
                                                                              at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742) 
                                                                              at android.app.ActivityThread.-wrap16(ActivityThread.java) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                              at android.os.Looper.loop(Looper.java:148) 
  </code></pre>
  
  <p>What is problem in that code?</p>