Quelle est la meilleure façon d'utiliser les préférences partagées entre les activités

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

  •  27-09-2019
  •  | 
  •  

Question

J'ai une préférence utilisateur dans mon application, qui obtient utilisé par différentes activités. Je voudrais connaître la meilleure façon d'utiliser ces préférences entre les différentes activités dans mon application.

J'ai cette idée de créer un objet de préférence partagée de l'activité principale et de là envoyer des intentions des différentes activités à prendre des mesures. Ça marcherait ...?

Ou tout simplement continuer à appeler getsharedpreferences() de chaque activité ..?

Merci.

Était-ce utile?

La solution

L'envoi des préférences partagées par les intentions semble excessivement complexe. Vous pouvez envelopper les préférences partagées avec quelque chose comme ci-dessous et appeler les méthodes directement à partir de vos activités:

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();
    }
}

Autres conseils

Vous pouvez utiliser cette façon et de déclarer mêmes variables avec le même nom dans toutes les activités où vous souhaitez utiliser.

  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); 

  }

Voici un premier temps wordcount donnera 4; Et quand vous modifier wordcount et que vous voulez stocker à nouveau

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

Vous devez déclarer ces mêmes variables dans les activités où vous souhaitez utiliser les préférences partagées. Et son meilleur appel que vous getSharedPreferences dans toutes les activités.

Je ne pense pas que le passage que la préférence dans le travail de volonté intention.

Vous pouvez l'utilisation des cours préférences partagées dans vos applications.

Si vous avez plus d'un type simple que chaîne ou int, vous pouvez utiliser un singleton ou prolonge la classe d'application qui sera accessible par toutes les activités de votre application. => Pas d'accès disque ici. Il suffit de garder en mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top