¿cuál es la mejor manera de utilizar las preferencias compartidas entre las actividades

StackOverflow https://stackoverflow.com/questions/4051875

  •  27-09-2019
  •  | 
  •  

Pregunta

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 esta idea para crear un objeto de la preferencia compartida de la actividad principal y desde allí los intentos de envío a las diferentes actividades a realizar acciones. Funcionaría eso...?

O simplemente seguir llamando getsharedpreferences() de todas las actividades ..?

Gracias.

¿Fue útil?

Solución

Envío de preferencias compartidas a través de las intenciones parece excesivamente complicado. Usted puede envolver las preferencias compartidas con algo como el siguiente y llamar a los métodos directamente de 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();
    }
}

Otros consejos

Se puede utilizar de esta manera y declarar mismas variables con el mismo nombre en todas las actividades en las que desee utilizar.

  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 edición de recuento de palabras y desea almacenar de nuevo

  editor.putInt("wordCount", 6);
  editor.commit();

Se tiene que declarar esta mismas variables en las actividades en las que desee utilizar las preferencias compartidas. Y es mejor que llaman getSharedPreferences en cada actividad.

No creo que la aprobación de esa preferencia en el trabajo voluntad intención.

Puede supuesto de uso compartido de preferencias en sus aplicaciones.

Si usted tiene más de un tipo simple de cuerda o int, se puede utilizar un producto único o se extiende la clase de aplicación que será accesible por todas las actividades de su aplicación. => No hay acceso al disco aquí. Simplemente guardado en la memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top