Android Fatal Error – Kann diese Aktion nach onSaveInstanceState nicht ausführen

Ich versuche, eine Fragment-Transaktion nach dem Anfordern von Berechtigungen in Android durchzuführen – aber die App stürzt ständig ab. Wie könnte dieser Code geändert werden, um dies zu vermeiden?

Jede Hilfe wird geschätzt.

  • Wie öffne ich eine installierte App aus einer E-Mail-URL in Android?
  • Android-Kamera: Fehler liefern Ergebnis ErgebnisInfo {who = null, request = 0, result = -1, data = null} zur Aktivität
  • Android wie man TextArea
  • Einrichten von C ++ 11 (std :: thread) für NDK mit ADT / Eclipse
  • Ist es möglich, ein Ziehbares aus dem Assets-Ordner zu laden?
  • So fügen Sie Ikonen zu Präferenz hinzu
  • KONTROLLE VOR DEM SENDEN EMAIL:

    private void emailShare() { if (mayRequestContacts()) { emailShareImpl(); } } 

    CHECK PERMISSIONS:

     private boolean mayRequestContacts() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { return true; } requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); return false; } 

    ERGEBNIS ERGEBNIS:

      @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == REQUEST_READ_CONTACTS) { if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { emailShareImpl(); } } } 

    INITIAT FRAGMENT TRANSACTION WENN GEWÄHRT WERDEN:

      private void emailShareImpl() { FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); EmailReferDialog mEmailReferDialog = new EmailReferDialog(); mEmailReferDialog.setCancelable(true); mEmailReferDialog.show(fragmentManager, "EMAIL_REFER_DIALOG"); } 

    LOGCAT:

     05-11 09:04:58.859 16113-16113/com.example E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example, PID: 16113 java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=65536, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.example/com.example.DashboardActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.app.ActivityThread.deliverResults(ActivityThread.java:3743) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3786) at android.app.ActivityThread.-wrap16(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5466) 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:1493) at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1511) at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:638) at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:617) at android.support.v4.app.DialogFragment.show(DialogFragment.java:139) at com.example.ReferFragment.emailShareImpl(ReferFragment.java:222) at com.example.ReferFragment.onRequestPermissionsResult(ReferFragment.java:140) at android.support.v4.app.FragmentActivity.onRequestPermissionsResult(FragmentActivity.java:894) at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:6582) at android.app.Activity.dispatchActivityResult(Activity.java:6460) at android.app.ActivityThread.deliverResults(ActivityThread.java:3739) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3786) at android.app.ActivityThread.-wrap16(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5466) 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) 

  • Wie verstecke man Legenden und Achsen in MPAndroidChart?
  • SyncAdapter- onPerformSync hat keinen Internetzugang
  • Ermitteln Sie die Google Streetview-Funktion
  • Android AudioRecord zwingt einen anderen Stream zur MIC Audio Quelle
  • Wie man Apk-Datei online ausführt?
  • Bekomme Bitmap aus Bitmapdescriptor
  • 2 Solutions collect form web for “Android Fatal Error – Kann diese Aktion nach onSaveInstanceState nicht ausführen”

    Dies geschieht, weil onRequestPermissionresult vor der Aktivität onResume . Sie können einfach beheben, indem Sie folgendes:

     private boolean mShareEmail = false; @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == REQUEST_READ_CONTACTS) { if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { mShareEmail = true; } } } @Override public void onResume() { super.onResume(); if (mShareEmail) { emailShareImpl(); mShareEmail = false; } } 

    Vielleicht ist der folgende Tipp ein bisschen spät, aber anstatt eines Workarounds, wenn du den Status der Aktivität nicht benutztest (zB das Berechtigungsmodell sollte staatenlos sein), solltest du CommandoSchlüssel bei der Fragmentübertragung verwenden.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.