Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Oct 3, 2024. It is now read-only.

Commit 623baa9

Browse files
Prevent rationale dialog from showing twice (#195)
1 parent 2189d2f commit 623baa9

File tree

4 files changed

+37
-4
lines changed

4 files changed

+37
-4
lines changed

‎build.gradle‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ ext {
2929

3030
mavenGroup = 'pub.devrel'
3131
mavenArtifactId = 'easypermissions'
32-
mavenVersion = '1.1.1'
32+
mavenVersion = '1.1.2-SNAPSHOT'
3333

3434
bintrayOrg = 'easygoogle'
3535

‎easypermissions/src/main/java/pub/devrel/easypermissions/helper/BaseFrameworkPermissionsHelper.java‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import android.app.FragmentManager;
44
import android.support.annotation.NonNull;
55
import android.support.annotation.StyleRes;
6+
import android.app.Fragment;
7+
import android.util.Log;
68

79
import pub.devrel.easypermissions.RationaleDialogFragment;
810

@@ -11,6 +13,8 @@
1113
*/
1214
public abstract class BaseFrameworkPermissionsHelper<T> extends PermissionHelper<T> {
1315

16+
private static final String TAG = "BFPermissionsHelper";
17+
1418
public BaseFrameworkPermissionsHelper(@NonNull T host) {
1519
super(host);
1620
}
@@ -24,8 +28,17 @@ public void showRequestPermissionRationale(@NonNull String rationale,
2428
@StyleRes int theme,
2529
int requestCode,
2630
@NonNull String... perms) {
31+
FragmentManager fm = getFragmentManager();
32+
33+
// Check if fragment is already showing
34+
Fragment fragment = fm.findFragmentByTag(RationaleDialogFragment.TAG);
35+
if (fragment instanceof RationaleDialogFragment) {
36+
Log.d(TAG, "Found existing fragment, not showing rationale.");
37+
return;
38+
}
39+
2740
RationaleDialogFragment
2841
.newInstance(positiveButton, negativeButton, rationale, theme, requestCode, perms)
29-
.showAllowingStateLoss(getFragmentManager(), RationaleDialogFragment.TAG);
42+
.showAllowingStateLoss(fm, RationaleDialogFragment.TAG);
3043
}
3144
}

‎easypermissions/src/main/java/pub/devrel/easypermissions/helper/BaseSupportPermissionsHelper.java‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import android.support.annotation.NonNull;
44
import android.support.annotation.StyleRes;
5+
import android.support.v4.app.Fragment;
56
import android.support.v4.app.FragmentManager;
7+
import android.util.Log;
68

79
import pub.devrel.easypermissions.RationaleDialogFragmentCompat;
810

@@ -11,6 +13,8 @@
1113
*/
1214
public abstract class BaseSupportPermissionsHelper<T> extends PermissionHelper<T> {
1315

16+
private static final String TAG = "BSPermissionsHelper";
17+
1418
public BaseSupportPermissionsHelper(@NonNull T host) {
1519
super(host);
1620
}
@@ -24,8 +28,18 @@ public void showRequestPermissionRationale(@NonNull String rationale,
2428
@StyleRes int theme,
2529
int requestCode,
2630
@NonNull String... perms) {
31+
32+
FragmentManager fm = getSupportFragmentManager();
33+
34+
// Check if fragment is already showing
35+
Fragment fragment = fm.findFragmentByTag(RationaleDialogFragmentCompat.TAG);
36+
if (fragment instanceof RationaleDialogFragmentCompat) {
37+
Log.d(TAG, "Found existing fragment, not showing rationale.");
38+
return;
39+
}
40+
2741
RationaleDialogFragmentCompat
2842
.newInstance(rationale, positiveButton, negativeButton, theme, requestCode, perms)
29-
.showAllowingStateLoss(getSupportFragmentManager(), RationaleDialogFragmentCompat.TAG);
43+
.showAllowingStateLoss(fm, RationaleDialogFragmentCompat.TAG);
3044
}
3145
}

‎easypermissions/src/main/java/pub/devrel/easypermissions/helper/SupportFragmentPermissionHelper.java‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Context;
44
import android.support.annotation.NonNull;
55
import android.support.v4.app.Fragment;
6+
import android.support.v4.app.FragmentActivity;
67
import android.support.v4.app.FragmentManager;
78

89
/**
@@ -16,7 +17,12 @@ public SupportFragmentPermissionHelper(@NonNull Fragment host) {
1617

1718
@Override
1819
public FragmentManager getSupportFragmentManager() {
19-
return getHost().getChildFragmentManager();
20+
FragmentActivity hostActivity = getHost().getActivity();
21+
if (hostActivity != null) {
22+
return hostActivity.getSupportFragmentManager();
23+
} else {
24+
return getHost().getChildFragmentManager();
25+
}
2026
}
2127

2228
@Override

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /