android - recorrer - ¿Cuál es la mejor manera de usar las preferencias compartidas entre actividades?
settings activity android studio (3)
Tengo una preferencia de usuario en mi aplicación, la cual es utilizada por diferentes actividades. Me gustaría saber la mejor manera de utilizar esas preferencias entre diferentes actividades en mi aplicación.
Tengo la idea de crear un objeto de preferencias compartidas desde la actividad principal y desde allí enviar intenciones a las diferentes actividades para que realicen acciones. Funcionaría eso...?
¿O simplemente seguir llamando a getsharedpreferences()
desde cada actividad?
Gracias.
El envío de preferencias compartidas a través de intentos parece demasiado complicado. Puede ajustar las preferencias compartidas con algo como el siguiente y llamar a los métodos directamente desde sus actividades:
public class Prefs {
private static String MY_STRING_PREF = "mystringpref";
private static String MY_INT_PREF = "myintpref";
private static SharedPreferences getPrefs(Context context) {
return context.getSharedPreferences("myprefs", 0);
}
public static String getMyStringPref(Context context) {
return getPrefs(context).getString(MY_STRING_PREF, "default");
}
public static int getMyIntPref(Context context) {
return getPrefs(context).getInt(MY_INT_PREF, 42);
}
public static void setMyStringPref(Context context, String value) {
// perform validation etc..
getPrefs(context).edit().putString(MY_STRING_PREF, value).commit();
}
public static void setMyIntPref(Context context, int value) {
// perform validation etc..
getPrefs(context).edit().putInt(MY_INT_PREF, value).commit();
}
}
Por supuesto, puede utilizar preferencias compartidas en sus aplicaciones.
Si tiene más de un tipo simple que string o int, puede usar un singleton o ampliar la clase de aplicación a la que podrán acceder todas las actividades de su aplicación. => No hay acceso al disco aquí. Simplemente guardado en la memoria.
Puede usar esta forma y declarar las mismas variables con el mismo nombre en todas las actividades en las que desee usar.
public static final String PREFS_NAME = "MyPrefsFile";
static SharedPreferences settings;
SharedPreferences.Editor editor;
int wordCount;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings = getSharedPreferences(PREFS_NAME, 0);
editor = settings.edit();
wordCount = settings.getInt("wordCount", 4);
}
Aquí inicialmente wordCount dará 4; Y cuando editas wordCount y quieres almacenar de nuevo
editor.putInt("wordCount", 6);
editor.commit();
Debe declarar estas mismas variables en las actividades en las que desea utilizar las preferencias compartidas. Y es mejor que llames a getSharedPreferences en cada actividad.
No creo que pasar esa preferencia en la intención funcione.