web-dev-qa-db-fra.com

Obtenir la valeur des préférences partagées Android en classe d'activité/normale

J'ai créé une activité de préférence partagée qui stocke les paramètres utilisateur. Désormais, je souhaite obtenir les valeurs d'une activité ou d'une classe Java normale. Veuillez fournir une solution ou un exemple que j'ai déjà essayé, mais que ce code a échoué.

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    SharedPreferences channel=this.getSharedPreferences(strFile, Context.MODE_PRIVATE);
    strChannel=channel.getString(keyChannel,"Default").toString();
    Toast.makeText(getApplicationContext(), strChannel, Toast.LENGTH_LONG).show();
}                     

dans ce code strfile pour par exemple. com.Android.pack.ClassName est SharedPreference Activity à partir des valeurs à récupérer, et keyChannel est une clé identique dans SharedPreference Activity.

Veuillez fournir la solution.

29
Sandeep

Si vous avez une SharedPreferenceActivity avec laquelle vous avez enregistré vos valeurs 

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String imgSett = prefs.getString(keyChannel, "");

si la valeur est enregistrée dans une référence partagée dans une activité, il s'agit de la bonne façon de la sauvegarder.

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString(keyChannel, email);
editor.commit();// commit is important here.

et voici comment vous pouvez récupérer les valeurs.

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyChannel, ""));

Sachez également que vous pouvez le faire dans une classe autre que Activity, mais que la seule condition est que vous deviez passer le contexte de l'activité. utilisez ce contexte pour obtenir les SharedPreferences.

mContext.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
63
Umesh

J'ai essayé ce code pour récupérer les préférences partagées d'une activité et je ne pouvais pas le faire fonctionner:

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedPreferences.getAll();
    Log.d("AddNewRecord", "getAll: " + sharedPreferences.getAll());
    Log.d("AddNewRecord", "Size: " + sharedPreferences.getAll().size());

À chaque fois que j'essayais, mes préférences me renvoyaient 0, même si j'ai 14 préférences enregistrées par l'activité de préférence . J'ai ajouté ceci aux préférences de la section onCreate.

getPreferenceManager (). setSharedPreferencesName ("defaultPreferences");

Après avoir ajouté cette déclaration, mes préférences enregistrées sont revenues comme prévu. J'espère que cela aidera quelqu'un d'autre qui pourrait avoir le même problème que moi.

4
Dave Cox

C'est la procédure qui me semble la plus simple:

SharedPreferences sp = getSharedPreferences("MySharedPrefs", MODE_PRIVATE);
SharedPreferences.Editor e = sp.edit();

    if (sp.getString("sharedString", null).equals("true")
            || sp.getString("sharedString", null) == null) {
        e.putString("sharedString", "false").commit();
        // Do something
    } else {
        // Do something else
    }
1
samreen

Vous utilisez désinstaller l'application et modifier le nom sharedPreferences puis exécuter cette application. Je pense que cela va résoudre le problème.

Un exemple de code permettant de récupérer des valeurs à partir de sharedPreferences vous pouvez utiliser le jeu de code suivant, 

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyValue, ""));
0
Codemaker