Aidan Follestad 9 vuotta sitten
vanhempi
commit
aa80dc905b

+ 1 - 1
commons/build.gradle

@@ -11,7 +11,7 @@ android {
         minSdkVersion 8
         targetSdkVersion 23
         versionCode 1
-        versionName "0.8.4.2"
+        versionName "0.8.5.0"
     }
     lintOptions {
         abortOnError false

+ 2 - 18
commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialDialogPreference.java

@@ -96,15 +96,7 @@ public class MaterialDialogPreference extends DialogPreference {
             builder.content(getDialogMessage());
         }
 
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "registerOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.registerOnActivityDestroyListener(this, this);
 
         mDialog = builder.build();
         if (state != null)
@@ -115,15 +107,7 @@ public class MaterialDialogPreference extends DialogPreference {
     @Override
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "unregisterOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.unregisterOnActivityDestroyListener(this, this);
     }
 
     @Override

+ 2 - 18
commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialEditTextPreference.java

@@ -162,15 +162,7 @@ public class MaterialEditTextPreference extends EditTextPreference {
         }
         mBuilder.customView(layout, false);
 
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "registerOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.registerOnActivityDestroyListener(this, this);
 
         mDialog = mBuilder.build();
         if (state != null)
@@ -183,15 +175,7 @@ public class MaterialEditTextPreference extends EditTextPreference {
     @Override
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "unregisterOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.unregisterOnActivityDestroyListener(this, this);
     }
 
     /**

+ 2 - 18
commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java

@@ -150,15 +150,7 @@ public class MaterialListPreference extends ListPreference {
             builder.content(getDialogMessage());
         }
 
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "registerOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.registerOnActivityDestroyListener(this, this);
 
         mDialog = builder.build();
         if (state != null)
@@ -169,15 +161,7 @@ public class MaterialListPreference extends ListPreference {
     @Override
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "unregisterOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.unregisterOnActivityDestroyListener(this, this);
     }
 
     @Override

+ 2 - 20
commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialMultiSelectListPreference.java

@@ -9,7 +9,6 @@ import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.preference.MultiSelectListPreference;
-import android.preference.PreferenceManager;
 import android.support.annotation.NonNull;
 import android.util.AttributeSet;
 import android.view.View;
@@ -17,7 +16,6 @@ import android.view.View;
 import com.afollestad.materialdialogs.DialogAction;
 import com.afollestad.materialdialogs.MaterialDialog;
 
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -130,15 +128,7 @@ public class MaterialMultiSelectListPreference extends MultiSelectListPreference
             builder.content(getDialogMessage());
         }
 
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "registerOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.registerOnActivityDestroyListener(this, this);
 
         mDialog = builder.build();
         if (state != null)
@@ -149,15 +139,7 @@ public class MaterialMultiSelectListPreference extends MultiSelectListPreference
     @Override
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
-        try {
-            PreferenceManager pm = getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "unregisterOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, this);
-        } catch (Exception ignored) {
-        }
+        PrefUtil.unregisterOnActivityDestroyListener(this, this);
     }
 
     @Override

+ 27 - 0
commons/src/main/java/com/afollestad/materialdialogs/prefs/PrefUtil.java

@@ -2,10 +2,13 @@ package com.afollestad.materialdialogs.prefs;
 
 import android.content.res.XmlResourceParser;
 import android.preference.Preference;
+import android.preference.PreferenceManager;
 import android.util.AttributeSet;
 
 import com.afollestad.materialdialogs.commons.R;
 
+import java.lang.reflect.Method;
+
 /**
  * @author Aidan Follestad (afollestad)
  */
@@ -27,4 +30,28 @@ class PrefUtil {
         if (!foundLayout)
             preference.setLayoutResource(R.layout.md_preference_custom);
     }
+
+    public static void registerOnActivityDestroyListener(Preference preference, PreferenceManager.OnActivityDestroyListener listener) {
+        try {
+            PreferenceManager pm = preference.getPreferenceManager();
+            Method method = pm.getClass().getDeclaredMethod(
+                    "registerOnActivityDestroyListener",
+                    PreferenceManager.OnActivityDestroyListener.class);
+            method.setAccessible(true);
+            method.invoke(pm, listener);
+        } catch (Exception ignored) {
+        }
+    }
+
+    public static void unregisterOnActivityDestroyListener(Preference preference, PreferenceManager.OnActivityDestroyListener listener) {
+        try {
+            PreferenceManager pm = preference.getPreferenceManager();
+            Method method = pm.getClass().getDeclaredMethod(
+                    "unregisterOnActivityDestroyListener",
+                    PreferenceManager.OnActivityDestroyListener.class);
+            method.setAccessible(true);
+            method.invoke(pm, listener);
+        } catch (Exception ignored) {
+        }
+    }
 }

+ 1 - 1
core/build.gradle

@@ -11,7 +11,7 @@ android {
         minSdkVersion 8
         targetSdkVersion 23
         versionCode 1
-        versionName "0.8.4.2"
+        versionName "0.8.5.0"
         consumerProguardFiles 'progress-proguard.txt'
     }
     lintOptions {

+ 2 - 2
sample/build.gradle

@@ -17,8 +17,8 @@ android {
         applicationId "com.afollestad.materialdialogssample"
         minSdkVersion 9
         targetSdkVersion 23
-        versionCode 150
-        versionName "0.8.4.2"
+        versionCode 151
+        versionName "0.8.5.0"
     }
     lintOptions {
         abortOnError false

BIN
sample/sample.apk