Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


SharedPreferences clase de ayuda

Estoy haciendo SharedPreferences helper class para hacer que mi código se vea bien.

public class SharedPreferencesHelper { Context context; public SharedPreferencesHelper(Context context){ this.context = context; } public boolean isLogged(String prefs){ return context.getSharedPreferences(prefs,Context.MODE_PRIVATE) .getBoolean("LOGGED",false); } public void setLogged(String prefs){ context.getSharedPreferences(prefs,Context.MODE_PRIVATE) .edit().putBoolean("LOGGED",true).apply(); } } 

La pregunta es si debo hacer estos métodos estáticos e inicializar SharedPreferences en cada método o mejor para dejarlo no estático y llamar SharedPreferencesHelper clase una vez de mis otras clases? Gracias

4 Solutions collect form web for “SharedPreferences clase de ayuda”

No quisiera hacer referencia al contexto. Preferiría mantener SharedPreference y su Editor como miembro estático de su clase de ayuda. De esta manera no necesitará instanciar SharedPreferencesHelper cada vez que necesite leer / escribir SharedPreference . Un paso más adelante utilizaría el Context la Aplicación (con una subclase de Aplicación personalizada) para inicializar SharedPreference y Editor , la primera vez que acceda al propio ayudante. Así es como lo daría forma

Utilizar esta :

 public class SharedPreferencesHelper { public static final String FILE_NAME = "APP_PREFERENCES"; public static void put(Context context, String key, Object object) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); if (object instanceof String) { editor.putString(key, (String) object); } else if (object instanceof Integer) { editor.putInt(key, (Integer) object); } else if (object instanceof Boolean) { editor.putBoolean(key, (Boolean) object); } else if (object instanceof Float) { editor.putFloat(key, (Float) object); } else if (object instanceof Long) { editor.putLong(key, (Long) object); } else { editor.putString(key, object.toString()); } SharedPreferencesCompat.apply(editor); } public static Object get(Context context, String key, Object defaultObject) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); if (defaultObject instanceof String) { return sp.getString(key, (String) defaultObject); } else if (defaultObject instanceof Integer) { return sp.getInt(key, (Integer) defaultObject); } else if (defaultObject instanceof Boolean) { return sp.getBoolean(key, (Boolean) defaultObject); } else if (defaultObject instanceof Float) { return sp.getFloat(key, (Float) defaultObject); } else if (defaultObject instanceof Long) { return sp.getLong(key, (Long) defaultObject); } return null; } public static void remove(Context context, String key) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.remove(key); SharedPreferencesCompat.apply(editor); } public static void clear(Context context) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.clear(); SharedPreferencesCompat.apply(editor); } public static boolean contains(Context context, String key) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); return sp.contains(key); } public static Map<String, ?> getAll(Context context) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); return sp.getAll(); } private static class SharedPreferencesCompat { private static final Method sApplyMethod = findApplyMethod(); @SuppressWarnings({"unchecked", "rawtypes"}) private static Method findApplyMethod() { try { Class clz = SharedPreferences.Editor.class; return clz.getMethod("apply"); } catch (NoSuchMethodException e) { e.printStackTrace(); } return null; } public static void apply(SharedPreferences.Editor editor) { try { if (sApplyMethod != null) { sApplyMethod.invoke(editor); return; } } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } editor.commit(); } } } 

Utilizaría la clase estática si el Context era un contexto "global" y obtener valores del contexto era gruesomely largo y (kinda) mal. De esta manera, obtener el valor de la clase estática será más fácil sin tener que cometer error repetidamente haciendo la misma operación en todo el espacio de código sin hacer un error.

Y en cuanto a convertir su SharedPreferencesHelper estático, un buen enfoque:

 public class SharedPreferencesHelper { private SharedPreferencesHelper(Context context){ } private static void ensureNotNull(Context context) { if (context == null) { throw new IllegalArgumentException("Context is null."); } } public static boolean isLogged(Context context, String prefs){ ensureNotNull(context); return context.getSharedPreferences(prefs,Context.MODE_PRIVATE) .getBoolean("LOGGED",false); } public static void setLogged(Context context, String prefs){ ensureNotNull(context); context.getSharedPreferences(prefs,Context.MODE_PRIVATE) .edit().putBoolean("LOGGED",true).apply(); } } 

Aquí esta clase te ayuda.

 import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.preference.PreferenceManager; //import android.preference.PreferenceManager; public class SharedPreference { private static SharedPreference sharedPreference; public static final String PREFS_NAME = "AOP_PREFS"; public static final String PREFS_KEY = "AOP_PREFS_String"; public static SharedPreference getInstance() { if (sharedPreference == null) { sharedPreference = new SharedPreference(); } return sharedPreference; } public SharedPreference() { super(); } public void save(Context context, String text , String Key) { SharedPreferences settings; Editor editor; //settings = PreferenceManager.getDefaultSharedPreferences(context); settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); //1 editor = settings.edit(); //2 editor.putString(Key, text); //3 editor.commit(); //4 } public String getValue(Context context , String Key) { SharedPreferences settings; String text = ""; // settings = PreferenceManager.getDefaultSharedPreferences(context); settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); text = settings.getString(Key, ""); return text; } public void clearSharedPreference(Context context) { SharedPreferences settings; Editor editor; //settings = PreferenceManager.getDefaultSharedPreferences(context); settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); editor = settings.edit(); editor.clear(); editor.commit(); } public void removeValue(Context context , String value) { SharedPreferences settings; Editor editor; settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); editor = settings.edit(); editor.remove(value); editor.commit(); } } 

Usted puede obtener un valor como este.

 String KeeLogin = SharedPreference.getInstance().getValue(getApplicationContext(), "YOUR_KEY"); 

Y almacenar datos

 SharedPreference.getInstance().save(LoginScreen.this,"VALUE","YOUR_KEY"); 

Espero que te ayude

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.