From 4e0c6b0008346ae8bd2a7e5161c1b975df33a450 Mon Sep 17 00:00:00 2001 From: Caipeng Date: Fri, 26 Oct 2018 16:49:13 +0800 Subject: [PATCH] Add a judgment condition(>API 26) when calling "FragmentManager.isStateSaved" method. --- .../RationaleDialogFragmentCompat.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/easypermissions/src/main/java/pub/devrel/easypermissions/RationaleDialogFragmentCompat.java b/easypermissions/src/main/java/pub/devrel/easypermissions/RationaleDialogFragmentCompat.java index 0e7bf60..81293f4 100644 --- a/easypermissions/src/main/java/pub/devrel/easypermissions/RationaleDialogFragmentCompat.java +++ b/easypermissions/src/main/java/pub/devrel/easypermissions/RationaleDialogFragmentCompat.java @@ -2,6 +2,7 @@ import android.app.Dialog; import android.content.Context; +import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.RestrictTo; @@ -17,10 +18,16 @@ public class RationaleDialogFragmentCompat extends AppCompatDialogFragment { public static final String TAG = "RationaleDialogFragmentCompat"; - + private boolean mStateSaved = false; private EasyPermissions.PermissionCallbacks mPermissionCallbacks; private EasyPermissions.RationaleCallbacks mRationaleCallbacks; + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + mStateSaved = true; + super.onSaveInstanceState(outState); + } + public static RationaleDialogFragmentCompat newInstance( @NonNull String rationaleMsg, @NonNull String positiveButton, @@ -45,7 +52,13 @@ public static RationaleDialogFragmentCompat newInstance( * would otherwise occur. */ public void showAllowingStateLoss(FragmentManager manager, String tag) { - if (manager.isStateSaved()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (manager.isStateSaved()) { + return; + } + } + + if (mStateSaved) { return; }