From e5b8bff9972d770678f02129262c8e6cab9e85d7 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 8 Nov 2017 19:04:26 -0800 Subject: [PATCH 1/3] Allow manually displayPreferenceDialog --- .../preference/PreferenceFragmentCompat.java | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java b/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java index a969219..9417cd5 100644 --- a/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java +++ b/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java @@ -92,18 +92,12 @@ public void onCreatePreferences(@Nullable Bundle savedInstanceState, String root @Override public void onDisplayPreferenceDialog(Preference preference) { if (this.getFragmentManager().findFragmentByTag(FRAGMENT_DIALOG_TAG) == null) { - Object f = null; - if (preference instanceof EditTextPreference) { - f = EditTextPreferenceDialogFragmentCompat.newInstance(preference.getKey()); + displayPreferenceDialog(new EditTextPreferenceDialogFragmentCompat(), preference.getKey()); } else if (dialogPreferences.containsKey(preference.getClass())) { try { - Fragment fragment = dialogPreferences.get(preference.getClass()).newInstance(); - Bundle b = new Bundle(1); - b.putString("key", preference.getKey()); - fragment.setArguments(b); - - f = fragment; + displayPreferenceDialog(dialogPreferences.get(preference.getClass()).newInstance(), + preference.getKey()); } catch (java.lang.InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { @@ -112,17 +106,24 @@ public void onDisplayPreferenceDialog(Preference preference) { } else { super.onDisplayPreferenceDialog(preference); } + } + } - if (f != null) { - if (f instanceof DialogFragment) { - ((DialogFragment) f).setTargetFragment(this, 0); - ((DialogFragment) f).show(this.getFragmentManager(), FRAGMENT_DIALOG_TAG); - } else { - this.getFragmentManager() - .beginTransaction() - .add((Fragment) f, FRAGMENT_DIALOG_TAG) - .commit(); - } + protected void displayPreferenceDialog(Fragment fragment, String key) { + displayPreferenceDialog(fragment, key, null); + } + protected void displayPreferenceDialog(Fragment fragment, String key, Bundle bundle) { + Bundle b = bundle == null ? new Bundle(1) : bundle; + b.putString("key", key); + if (fragment != null) { + if (fragment instanceof DialogFragment) { + fragment.setTargetFragment(this, 0); + ((DialogFragment) fragment).show(this.getFragmentManager(), FRAGMENT_DIALOG_TAG); + } else { + this.getFragmentManager() + .beginTransaction() + .add(fragment, FRAGMENT_DIALOG_TAG) + .commit(); } } } From 9cf0b81bfa12bb670cb1bc4df5f53e6a385df1df Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 8 Nov 2017 19:23:28 -0800 Subject: [PATCH 2/3] Fix b not used in displayPreferenceDialog --- .../fix/support/v7/preference/PreferenceFragmentCompat.java | 1 + 1 file changed, 1 insertion(+) diff --git a/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java b/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java index 9417cd5..78074bc 100644 --- a/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java +++ b/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java @@ -116,6 +116,7 @@ protected void displayPreferenceDialog(Fragment fragment, String key, Bundle bun Bundle b = bundle == null ? new Bundle(1) : bundle; b.putString("key", key); if (fragment != null) { + fragment.setArguments(b); if (fragment instanceof DialogFragment) { fragment.setTargetFragment(this, 0); ((DialogFragment) fragment).show(this.getFragmentManager(), FRAGMENT_DIALOG_TAG); From 5700aa585c473debe4a28483c2cb6eadb356cfb9 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 8 Nov 2017 20:01:23 -0800 Subject: [PATCH 3/3] Call setTargetFragment unconditionally --- .../fix/support/v7/preference/PreferenceFragmentCompat.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java b/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java index 78074bc..4d79b7e 100644 --- a/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java +++ b/preference-v7/src/main/java/com/takisoft/fix/support/v7/preference/PreferenceFragmentCompat.java @@ -117,8 +117,8 @@ protected void displayPreferenceDialog(Fragment fragment, String key, Bundle bun b.putString("key", key); if (fragment != null) { fragment.setArguments(b); + fragment.setTargetFragment(this, 0); if (fragment instanceof DialogFragment) { - fragment.setTargetFragment(this, 0); ((DialogFragment) fragment).show(this.getFragmentManager(), FRAGMENT_DIALOG_TAG); } else { this.getFragmentManager()